четверг, 17 апреля 2008 г.

Команды at() и [] для luabind::object

Как только 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 комментарий:

shoooler комментирует...

В следующих статьях я покажу, как это сделать.
Просим! Просим!

Реально, твой блог - пожалуй единственный вменяемый ресурс по использованию C++ классов в LUA.
Так держать, ждем продолжения!