免责声明我不使用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
的实例指针是指向哪个类的。唯一有用的信息是,所有将与
Bar::bar
一起使用的类都是一个类的子类!这是否可行?如何修复我的代码?提前致谢!