Как только lua тип назначен для luabind::object вы можете использовать оператор [] или методм at() для доступа к данным. at() обеспечивает read-only доступ, а [] - read-write доступ. Параметр, передаваемый в [] или at(), должен быть lua типом доступным в глобальном пространстве имен (помните, что все переменные lua объявлены в глобальной области видимости, если явно не указано ключевое слово local перед первым объявлением переменной в скрипте lua). Для преобразования типа luabind::object в C++ тип необходимо использовать luabind::object_cast.
Например давайте объявим такие переменные в lua скрипте:
Mat = 37
Sharon = 15
Scooter = 1.5
Теперь мы должны связать luabind::object с глобальной таблицей lua. Для этого необходимо использовать функцию get_globals:
luabind::object global_table = get_globals(pLua);
После этого можно получить доступ до объявленных переменных:
float scooter = luabind::object_cast<float>(global_table.at("Scooter"));
Или поменять значение переменных:
global_table["Mat"] = 10;
Одной из важных особенностей luabind::object является возможность вызывать функции, определенные в lua. Вы можете даже включать luabind::object в поля класса C++, позволяя расширить функциональные возможности класса. В следующих статьях я покажу, как это сделать.
1 комментарий:
В следующих статьях я покажу, как это сделать.
Просим! Просим!
Реально, твой блог - пожалуй единственный вменяемый ресурс по использованию C++ классов в LUA.
Так держать, ждем продолжения!
Отправить комментарий