c++ - 从指针访问 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]]'”。
解决方案
重载适用于对象,而operator []
不是指针。由于state
是一个指针,您必须先取消引用指针,然后使用operator []
:
(*state)["foo"]
或operator
在指针本身上使用关键字:
state->operator[]("foo")
甚至更迟钝:
(*state).operator[]("foo")
甚至是两条线:
auto& temp = *state;
temp["foo"];
推荐阅读
- swift - iOS 15 SwiftUI 键盘工具栏随机行为
- github - 从另一个仓库获取更新而不在更改后进行任何 PR 的最佳做法是什么?
- c++ - GetDiskFreeSpaceExA 麻烦
- python - 获取 dpkg:错误:在 PATH 中未找到 2 个预期程序或无法从我构建的 .deb 执行
- javascript - “未知”类型的参数不能分配给“字符串”类型的参数。TS2345
- twitter-bootstrap - 将 Bootstrap 5 工具提示添加到 Vue 3
- azure - 在 Terraform 中按顺序创建资源组
- wordpress - 如何将 woocommerce 的“产品库”功能实现为自定义帖子类型
- javascript - 隐藏预设状态时下拉菜单砌体(JS)不起作用
- php - 如何使用 phpMailer 库将下载的 excel 文件发送到邮件?