我正在尝试从与 Luabind 绑定的方法返回 std::shared_ptr,但它似乎无法识别该类型。
Luabind 代码:
module(lua)
[
class_<Character, BaseEntity, std::shared_ptr<Character> > ("Character"),
def("createCharacter", &Character::createCharacter)
];
创建字符代码:
std::shared_ptr<Character> Character::createCharacter(Game* gameInstance, const Character::CharacterSetup& characterSetup, string sprite, b2World* world)
{
return std::shared_ptr<Character>(new Character(gameInstance, characterSetup, sprite, world));
}
如果我在 Lua 脚本中调用此方法,则不会返回任何内容,并且执行会停在那里。但是,如果我将方法更改为返回 Character*,它会按预期工作。一些谷歌搜索告诉我返回 shared_ptr 应该不是问题。
我究竟做错了什么?
另外,我有这段代码,所以 Luabind 可以理解 std::shared_ptr:
namespace luabind
{
template <typename T>
T* get_pointer(std::shared_ptr<T> const& p)
{
return p.get();
}
}