【发布时间】:2013-10-12 18:44:21
【问题描述】:
我使用lualite将以下对象包装在lua中:
class SpriteComponent : public Component
{
public:
SpriteComponent();
std::string name() const;
std::string textureId() const;
void setTextureId(const std::string& id);
int spriteCoordX() const;
void setSpriteCoordX(int value);
int spriteCoordY() const;
void setSpriteCoordY(int value);
};
绑定代码:
module(L,
class_<SpriteComponent>("SpriteComponent")
.constructor("new")
.def("name", &SpriteComponent::name)
.property("textureId",
&SpriteComponent::textureId, &SpriteComponent::setTextureId)
.property("spriteCoordX",
&SpriteComponent::spriteCoordX, &SpriteComponent::setSpriteCoordX)
.property("spriteCoordY",
&SpriteComponent::spriteCoordY, &SpriteComponent::setSpriteCoordY)
);
有没有办法(在 lua 端或 C++ 端)获取属性列表?如果我在结果表中列出这些对,我只会得到 name 和 __instance。
local o = SpriteComponent.new()
for key,value in pairs(o) do
print("found member " .. key);
end
我什至尝试了一些these 台式打印机,但没有运气。
【问题讨论】:
-
您能说明您是如何尝试构建您所指的列表的吗?
-
我根据this 问题进行了尝试。我在帖子中添加了更多详细信息。
-
你的意思是在那个循环中你有
key假设只有两个值:name和__instance?更具体地说,在你的 Lua 循环中只输入print(key, " --> ", value)并发布结果。 -
__instance --> userdata: 0xa03e170 name --> function: 0xa03cfe8. -
嗯。注释掉循环,试试这个并发布发生了什么:
print("1:", o.name()); print("2:", o.textureId)
标签: c++ lua introspection