从指针中访问Kaguya Lua状态

我需要一个类作为具有指向Kaguya Lua状态的指针的类的子类。在子类中,我需要使用重载的[]运算符访问Lua状态的值。

我已经尝试查找答案Kaguya源代码,但没有找到任何答案。

#include "kaguya.hpp"

class base
{
public:

    kaguya::State *state;

};

class derivate : public base
{
public:

    int foo()
    {
        return 2+5;
    }

    void exposeFunction()
    {
        state["foo"] = &foo;
    }

    derivate()
    {
        state = new kaguya::State;
    }
    ~derivate()
    {
        delete state;
    }

};

int main()
{
    derivate d;

    return 0;
}

我期望程序编译通过,但我得到了错误消息:“无效类型'kaguya :: State \ * \ [const char \ [4 ] ]'用于数组下标”。

点赞
用户3133316
用户3133316

operator []重载适用于对象,而不适用于指针。由于state是一个指针,您必须首先对指针进行解引用,然后再使用operator []

(*state)["foo"]

或在指针本身上使用operator关键字:

state->operator[]("foo")

甚至更加晦涩:

(*state)。operator[](“foo”)

甚至是两个线程:

auto& temp = *state;
temp["foo"];
2019-08-18 18:04:55