C++ Lua带有Luabind编译错误c++;
我不能让它工作 这是我的代码,我尽可能简单:C++ Lua带有Luabind编译错误c++;,c++,class,lua,luabind,C++,Class,Lua,Luabind,我不能让它工作 这是我的代码,我尽可能简单: #include <iostream> #include <lua/lua.hpp> #include <luabind/luabind.hpp> #include <luabind/class.hpp> class MyClass { public: MyClass() {} ~MyClass() {} void myFunc() { std::co
#include <iostream>
#include <lua/lua.hpp>
#include <luabind/luabind.hpp>
#include <luabind/class.hpp>
class MyClass
{
public:
MyClass() {}
~MyClass() {}
void myFunc() { std::cout << "Hi !" << std::endl; }
int getMyVar2() { return (this->myVar2); }
int myVar;
private:
int myVar2;
};
int main()
{
MyClass *m = new MyClass();
lua_State *L = luaL_newstate();
luabind::open(L);
luabind::module(L)
[
luabind::class_<MyClass>("MyClass")
.def("myFunc", &MyClass::myFunc)
.def("getMyVar2", &MyClass::getMyVar2)
.def("myVar", &MyClass::myVar)
];
luabind::globals(L)["globalName"] = m;
if (luaL_dofile(L, "example.lua"))
fprintf(stderr, "%s\n", lua_tostring(L, -1));
lua_close(L);
}
有人能帮我吗?我确信这是一个初学者的错误。您不能用.def声明属性,因为它只用于函数。 根据您希望访问类成员的方式,您可以使用不同的方法:
luabind::module(L)
[
luabind::class_<MyClass>("MyClass")
.def("myFunc", &MyClass::myFunc)
.def("getMyVar2", &MyClass::getMyVar2) // function with MyClass:getMyVar2()
.property("myVar2", &MyClass::getMyVar2) // MyClass.myVar2 is only readable, same as MyClass:getMyVar2()
.property("myVar", &MyClass::myVar) // MyClass.myVar is only readable
// vs
.def_readwrite("myVarT", &MyClass::myVar) // MyClass.myVarT is read and writable
];
luabind::globals(L)["globalName"] = m;
luabind::模块(L)
[
luabind::类uux(“MyClass”)
.def(“myFunc”,&MyClass::myFunc)
.def(“getMyVar2”,&MyClass::getMyVar2)//带有MyClass:getMyVar2()的函数
.property(“myVar2”,&MyClass::getMyVar2)//MyClass.myVar2仅可读,与MyClass:getMyVar2()相同
.property(“myVar”,&MyClass::myVar)//MyClass.myVar仅可读
//vs
.def_readwrite(“myVarT”,&MyClass::myVar)//MyClass.myVarT是可读写的
];
luabind::globals(L)[“globalName”]=m;
查看doku以获得详细解释:嗨,谢谢!我使用.def作为变量,这给了我一个编译错误。我不知道,财产。再次感谢!
}
luabind::module(L)
[
luabind::class_<MyClass>("MyClass")
.def("myFunc", &MyClass::myFunc)
.def("getMyVar2", &MyClass::getMyVar2) // function with MyClass:getMyVar2()
.property("myVar2", &MyClass::getMyVar2) // MyClass.myVar2 is only readable, same as MyClass:getMyVar2()
.property("myVar", &MyClass::myVar) // MyClass.myVar is only readable
// vs
.def_readwrite("myVarT", &MyClass::myVar) // MyClass.myVarT is read and writable
];
luabind::globals(L)["globalName"] = m;