免責事項私は使用しないか、他BOOST
のライブラリ
最後に、PointerToMemberFunctionの仕組みを学びました。これは私のコード例です。
#include <iostream>
using namespace std;
class Foo
{
public:
void foo ( )
{
cout << "I'm a foo method\n";
};
};
class Bar
{
public:
void bar ( Foo* fooPtr , void(Foo::*fooFnPtr)() )
{
(fooPtr->*fooFnPtr)();
};
};
int main()
{
Foo* foo = new Foo();
Bar* bar = new Bar();
bar->bar ( foo , &Foo::foo );
return 0;
}
さて、何が問題なのか。Bar::bar
実際のプロジェクトでは、どのクラスfooFnPtr
が へのポインターであるかがわからないため、何らかの方法で変更する必要があります。つまりBar::bar
、 だけでなく、どのクラスでも動作する必要がありFoo
ます。私にはわかりませんが、渡されるクラスのインスタンスへのポインタBar::bar
です。
役立つことの 1 つは、動作するすべてのクラスがBar::bar
1 つのクラスの子であることです。
これは達成可能ですか?コードを修正するにはどうすればよいですか? 前もって感謝します!