【发布时间】:2014-06-21 16:47:01
【问题描述】:
奇怪的问题我有一个使用多个类的程序,其中一些类用于定义其他类中的对象,但我无法修改它们的值,不确定这是否有意义,但我会尝试演示
C++ 文件
class A{
public:
A(){
c = 0
}
int c;
};
class B{
public:
A d;
};
luabridge::getNamespace(L)
.addNamespace("test")
.addClass<A>("A")
.addConstructor<void(*) ()>()
.addData("c", &A::c)
.endClass()
.addClass<B>("B")
.addConstructor<void(*) ()>()
.addData("d", &A::d)
.endClass()
.endNamespace();
现在在我们拥有的 lua 文件中
var = test.B()
var.d.c = 2
print(var.d.c)
然后程序打印出来
0
只是为了澄清如果 A 的构造函数将 c 设置为 666 那么程序输出 666
【问题讨论】:
-
为什么
B.d.c = 2会起作用?我在任何类中都看不到任何静态成员。 -
静态成员将如何发挥作用?一切都在 C++ 中运行,只有当我在 lua 中尝试相同的事情时才会遇到问题。
-
你能把你在 luabridge 初始化中省略的其他“废话”包括进来吗?
-
是的,请稍等
-
@TimCooper by static 你的意思是静态 int c;