首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重载函数和luabind的问题

重载函数和luabind的问题
EN

Stack Overflow用户
提问于 2011-06-28 00:14:41
回答 1查看 1.7K关注 0票数 4

我有一个要绑定到lua的类。简化后的代码可能是:

代码语言:javascript
复制
class CSprite2D{
    void setPosition(glm::ivec2 val) { m_position = val; }
    void setPosition(int posX, int posY) { m_position.x = posX; m_position.y = posY; }
    static void exposeAPI(lua_State* L,const unsigned char* data)
    {
        assert(L);
        luabind::module(L)[
        luabind::class_<CSprite2D>("CSprite2D")
        .def("setPosition",(void(*)(int,int))&CSprite2D::setPosition)
    ];
    }

当我尝试编译时,编译器抛出错误:

代码语言:javascript
复制
Error   1   error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'void (__cdecl *)(int,int)' c:\directo\gameprojects2008\zeleste2d\src\graphics\gpx\sprite2d.cpp 74
Error   2   error C2780: 'luabind::class_<T> &luabind::class_<T>::def(luabind::detail::operator_<Derived>)' : expects 1 arguments - 2 provided  c:\directo\gameprojects2008\zeleste2d\src\graphics\gpx\sprite2d.cpp 74
Error   3   error C2784: 'luabind::class_<T> &luabind::class_<T>::def(luabind::detail::operator_<Derived>,const Policies &)' : could not deduce template argument for 'luabind::detail::operator_<Derived>' from 'const char [12]'  c:\directo\gameprojects2008\zeleste2d\src\graphics\gpx\sprite2d.cpp 74
Error   4   error C2784: 'luabind::class_<T> &luabind::class_<T>::def(luabind::constructor<A0,A1,A2,A3,A4,A5,A6,A7,A8,A9>,const Policies &)' : could not deduce template argument for 'luabind::constructor<A0,A1,A2,A3,A4,A5,A6,A7,A8,A9>' from 'const char [12]'  c:\directo\gameprojects2008\zeleste2d\src\graphics\gpx\sprite2d.cpp 74
Error   5   error C2780: 'luabind::class_<T> &luabind::class_<T>::def(luabind::constructor<A0,A1,A2,A3,A4,A5,A6,A7,A8,A9>)' : expects 1 arguments - 2 provided  c:\directo\gameprojects2008\zeleste2d\src\graphics\gpx\sprite2d.cpp 74
Error   6   error C2780: 'luabind::class_<T> &luabind::class_<T>::def(const char *,F,Default,const Policies &)' : expects 4 arguments - 2 provided  c:\directo\gameprojects2008\zeleste2d\src\graphics\gpx\sprite2d.cpp 74
Error   7   error C2780: 'luabind::class_<T> &luabind::class_<T>::def(const char *,F,DefaultOrPolicies)' : expects 3 arguments - 2 provided c:\directo\gameprojects2008\zeleste2d\src\graphics\gpx\sprite2d.cpp 74

我知道问题的原因是luabind不能推导出最好的重载函数,但是reading the luabind documentation我在luabind中正确地定义了这个函数。

有什么想法吗?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-28 00:28:57

您正在将函数强制转换为错误的类型,您需要强制转换为指向成员函数的指针。

尝试:

代码语言:javascript
复制
.def("setPosition", (void (CSprite2D::*)(int, int))&CSprite2D::setPosition)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6495778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档