2010-06-17 2 views

ответ

6

Если вы пытаетесь искать отражения информации о переменной (список методов и т.д.), то вы можете использовать class_info() и class_names() функции.

Примечание: Эти функции не документированы, насколько я могу судить, но они по крайней мере существуют в Luabind 0.9. Используйте на свой риск.

Чтобы использовать эти функции Luabind в вашем коде Lua, вам необходимо сначала связать их. Пример:

#include "luabind/class_info.hpp" 
/* ... */ 
luabind::open(L); 
luabind::bind_class_info(L); 

Затем из кода Lua, вы можете вникать переменную:

-- Variable "game" is an instance of class "Game" 
c = class_info(game) 

print(c.name) 
-- Prints: 
-- Game 

for k, v in pairs(c.methods) do print(k, v) end 
-- Prints: 
-- get_config function: 01765AE0 
-- on_init  function: 01765E90 
-- ... 

for k, v in pairs(c.attributes) do print(k, v) end 
-- ... 

Вы также можете получить список всех классов Luabind знает:

for i, v in ipairs(class_names()) do print(v) end 
-- Prints: 
-- class_info_data 
-- Config 
-- Game 
-- ... 
+0

Спасибо. Это очень полезный инструмент для получения информации о классе. Я искал его в течение долгого времени. Но это не полностью решает проблему. Вот что я нашел в списке рассылки luabind: «Я понял, как использовать class_info, и он отлично работает, чтобы получить имя и методы класса, но не атрибуты. Только атрибуты, которые отображаются с помощью C++, перечислены в разделе« Атрибуты », атрибуты, созданные в lua.Как я могу получить список атрибутов, созданных в lua, в C++ и их значение? " – kFk

Смежные вопросы