Я пытаюсь вернуть std::shared_ptr из метода, связанного с Luabind, но, похоже, он не распознает тип.
Код Luabind:
module(lua)
[
class_<Character, BaseEntity, std::shared_ptr<Character> > ("Character"),
def("createCharacter", &Character::createCharacter)
];
код 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();
}
}
boost::shared_ptr<T>
вместо этого? - person Luc Danton   schedule 23.02.2013