-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感謝您的編輯。 –