继续这个话题,我想把它分成另一个更具体的问题。我想使用 ChaiScript 绑定一个函数,我可以使用 来做到这一点std::function
,但我似乎无法std::function
知道它应该使用哪个重载。
镜像相关方法:
class DLLExport Actor
{
public:
Actor(Level* level, const String& name, Actor* parent);
virtual ~Actor();
void setPosition(const Real& x, const Real& y, const Real& z);
void setPosition(const Vector3& position);
};
然后我试图像这样绑定它:
std::function<void(Actor*, Vector3&)> setPos = &Actor::setPosition; // <-- C2440 here.
m->add(fun(setPos), "setPosition");
我得到的是以下错误:
2>..\..\ScriptingDemo\Binder.cpp(63): error C2440: 'initializing' : cannot convert from 'overloaded-function' to 'std::function<void (Actor *, Vector3 &)>'
2> No constructor could take the source type, or constructor overload resolution was ambiguous