class Hoge
{
public:
void show()
{
std::cout << "Hello World" << std::endl;
}
};
int main()
{
lua_State* l = lua_open();
luaL_openlibs( l );
luaopen_base( l );
luabind::open( l );
luabind::module( l )
[
luabind::class_<Hoge, boost::shared_ptr<Hoge>>( "Hoge" )
.def( "show", &Hoge::show )
];
boost::shared_ptr<Hoge> p( new Hoge() );
luaL_dofile( l, "test.lua" );
luabind::call_function<void>( l, "exec", p );
lua_close( l );
}
それを使いたいと思うのですが、単純に
class Hoge
{
public:
void show()
{
std::cout << "Hello World" << std::endl;
}
};
int main()
{
lua_State* l = lua_open();
luaL_openlibs( l );
luaopen_base( l );
luabind::open( l );
luabind::module( l )
[
luabind::class_<Hoge, std::shared_ptr<Hoge>>( "Hoge" )
.def( "show", &Hoge::show )
];
std::shared_ptr<Hoge> p( new Hoge() );
luaL_dofile( l, "test.lua" );
luabind::call_function<void>( l, "exec", p );
lua_close( l );
}
namespace luabind
{
template<class T>
T* get_pointer(std::shared_ptr<T> const& p) { return p.get(); }
}
どなたかご存じの方がおられましたら、教えていただければと思います。
一応、boost::shared_ptrの方は動作を確認しました。