比如: lua里面是:
add = {1,2,3,4,5,6....N}
add.a={1,2}
add.b={3,4}
add.c={5,6}
让c++能完整的得到整个表的值,并保存在一个数组里,但是add的长度不能确定,
éå¸¸è°¢è°¢ä½ çåçï¼ç°å¨é®é¢å·²ç»è§£å³äºã
ä¸è¿æææ´å¥½çæ¹å¼ï¼å°luaç表åå
¥æ ä¼ ç»C++
C++æ个å½æ°è½å¾å°è¡¨çä¸æ ï¼ç´æ¥while åå°NULLå°±åæ¢ã
lua与宿主交互就是通过栈来交互的,关键是C++如何得到lua的一个表中的所有值(哈希表)
追答http://www.cppblog.com/mybios/archive/2006/11/18/15339.html
你看下这个文章,下边这段话
// 将一个 class 作为一个 Lua 对象是很容易的,只需要增加以下宏定义。
DEFINE_TYPENAME("My.array");
BEGIN_REGLUALIB("array")
LUALIB_ITEM_create("new", MyArray ) // 创建MyArray (注:由于发表的原因,create应为全部大写)
LUALIB_ITEM_DESTROY("del", MyArray ) // 消除MyArray。
END_REGLUALIB()
BEGIN_REGLUALIB_MEMBER()
LUALIB_ITEM_FUNC("size", int (MyArray*), &MyArray::size)
LUALIB_ITEM_FUNC("__getindex", double(MyArray*, int), &MyArray::getvalue)
LUALIB_ITEM_FUNC("__newindex", void (MyArray*, int, double), &MyArray::setvalue)
LUALIB_ITEM_FUNC("__tostring", const char* (MyArray*), &MyArray::ToString)
LUALIB_ITEM_DESTROY("__gc", MyArray ) // 垃圾收集时消除对象用。
END_REGLUALIB_MEMBER()
你可以试试在c++中先声明好一个类,然后在lua中计算,计算结果存储在你声明的这个类中,然后以这个类作为桥梁传递数据。
我是用lua写寻路算法,写好了,不知道怎么将他传进宿主,宿主又如何保存?
如果以字符串形式传入,效率灰常低