Вернуть несколько таблиц в C ++, как узнать имя возвращаемой таблицы

Я использую Lua для реализации некоторых функций, результаты помещаются в таблицу s и возвращаются обратно в код C ++. Например, в конце Lua я возвращаю эти таблицы в C ++

return names, ages, courses

Теперь в C ++ мне нужно читать элементы в возвращаемых таблицах. Как я могу узнать имя таблицы, чтобы знать, какие элементы нужно получить? Другими словами, следующие коды sudo иллюстрируют то, что я хочу делать:

if table_name == "names":  //some commands can realize this?
    lua_getfield(L, -1, "Tom");
    the_name = lua_tostring(L, -1);
    cout << the_name << endl;
    Lua_pop(L, 1);
elif table_name == "ages": //similar to last comment...
    lua_getfield(L, -1, "girls");
    the_age = lua_tostring(L, -1);
    ....... //some operations

У кого-нибудь есть идеи? Кстати, я использую Lua5.3.1 на win7


person gladys0313    schedule 16.10.2015    source источник
comment
У вас может быть поле во всех ваших таблицах, которое содержит их имя / тип.   -  person malhotraprateek    schedule 16.10.2015
comment
@malhotraprateek звучит хорошо!   -  person gladys0313    schedule 16.10.2015
comment
Добавлю как ответ.   -  person malhotraprateek    schedule 16.10.2015
comment
Как и все значения Lua, у таблиц нет имен. У переменных есть имена.   -  person Tom Blodget    schedule 17.10.2015


Ответы (2)


У вас может быть поле во всех ваших таблицах, которое содержит их имя / тип.

person malhotraprateek    schedule 16.10.2015
comment
ну ... кажется, что-то не так ... вот мой код; - person gladys0313; 16.10.2015

Вы не будете знать имена переменных, под которыми ранее хранились таблицы, но ваша функция Lua возвращает их в определенном порядке. В C ++ эти таблицы помещаются в стек, поэтому courses - это верхнее значение, а ages - следующее ниже.

person Youka    schedule 16.10.2015