-1
我有luabind问题,或者至少我希望它是一个问题luabind - C++到Lua到C++
我有一个香港专业教育学院与卢阿注册的实体类,
理想我想它的子类并覆盖其职能,从那里我希望把它送回来到C++,并将其存储
此外,我希望能够从C++从存储的对象调用它的新功能/指针然而
即时通讯目前正在努力甚至可以让C++获取类型cEn的对象tity * back?在LUA脚本 我可以加载的类,调用它的变量和函数,我试图把它 到takeClass或takebOject但它出来是什么也没有一个空白类就可以了
设置例如foo->名称是“”而不是“Entity1”和id是0而不是1
anyideas我做错了什么? ive在谷歌搜索至少一周现在 没有理解这个问题的运气,它完全停止我的项目进度 ?
//#######################################################################
// Test function
//#######################################################################
void luaTest::TakeClass(cEntity* foo)
{
cout << foo->name << endl;
}
void luaTest::TakeObject(luabind::object foo)
{
cEntity* foobar = luabind::object_cast<cEntity*>(foo);
cout << foobar->name << endl;
}
void luaTest::luabindClass(lua_State* L)
{
//Somewhere else
module(L)
[
class_<luaTest>("luaTest")
.def(constructor<>())
.def("TakeClass", &luaTest::TakeClass)
.def("TakeObject", &luaTest::TakeObject)
];
globals(L)["test"] = this;
}
//#######################################################################
// Entiy Class
//#######################################################################
class cEntity
{
public:
string name;
int id;
cEntity();
~cEntity();
static void luabindClass(lua_State* L);
};
//#######################################################################
cEntity::cEntity()
{
name = "NotSet";
id = 0;
}
cEntity::~cEntity()
{
}
void cEntity::luabindClass(lua_State* L)
{
module(L)
[
class_<cEntity>("cEntity")
.def(constructor<>())
.def_readwrite("name", &cEntity::name)
.def_readwrite("id", &cEntity::id)
];
}
//#######################################################################
// Lua File
//#######################################################################
entity = cEntity();
entity.name = "Entity1";
entity.id = 1;
test:TakeClass(entity);
test:TakeObject(entity);
//#######################################################################
//#######################################################################
// main
//#######################################################################
....
/* run the script */
if (luaL_dofile(L, "avg.lua")) {
std::cout << lua_tostring(L, -1) << std::endl; // Print out the error message
}
....
//#######################################################################
当代码回答,请在代码应答器后在这里。为什么?因为如果X年Github处于关闭状态,阅读此文的人仍然可以得到答案; ) – DrakaSAN
感谢您的快速回复,因为我不得不继续工作,因此我不得不继续工作(仍然是heh) um没有错误打印出来,我在takeClass和takeObject中添加了一个检查,以及do_file只是为了确保 有没有我应该使用的lua/luabind的特定版本?因为我运行了你的代码,并得到了和以前一样的东西?我知道我使用lua5.1,我从主站点抓住了luabind? – Saragan
@DrakaSAN感谢您的编辑。 –