Опитвам се да върна 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 скрипт, нищо не се връща и изпълнението спира там. Ако обаче променя метода за връщане на символ *, той работи както се очаква. Някакво гугълване ми казва, че връщането на 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