Продолжая эту тему, я хотел бы разделить ее на другой, более конкретный вопрос. Я хочу связать функцию с помощью 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