首页 > 解决方案 > 从指针访问 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]]'”。

标签: c++lua

解决方案


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

(*state)["foo"]

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

state->operator[]("foo")

甚至更迟钝:

(*state).operator[]("foo")

甚至是两条线:

auto& temp = *state;
temp["foo"];

推荐阅读