Luabind でバインドされたメソッドから std::shared_ptr を返そうとしていますが、型を認識していないようです。
ルバインドコード:
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();
}
}