私はこのコードを持っています
class ClassX {};
class ClassY : public ClassX {};
typedef std::function<void (ClassX*)> myCaller;
class Foo {
Foo()
{
createCaller(this, &Foo::bar); //line 22 with the error
}
template <typename Class>
void createCaller(Class *obj, void (Class::*func)(ClassX*))
{
myCaller mc = std::bind(func, obj, std::placeholders::_1);;
}
void bar(ClassY* x)
{
printf("fooBrr");
}
};
そして、barがClassXの代わりにClassXを拡張するClassYを取得するまでは正常に機能します。
コンパイル時エラーが発生します:main.cpp:22:9:「createCaller」の呼び出しに一致するメンバー関数がありません
問題は、barがClassXまたは任意のクラスを拡張する任意のクラスのパラメーターを取得できるようにするにはどうすればよいですか?それも可能ですか?