假设我有两节课
class A
{
public:
void foo( /* ............. */ );
};
class B
{
public:
void bar();
};
我想知道,是否甚至可以将
foo
方法的指针传递给bar
方法,将其存储在A
中,然后稍后从bar
运行A
。我应该说,A
不知道,bar
是哪个类的成员!如果您向我展示该主题的语法或链接没有那么复杂,我将不胜感激。
说明
我正在为C++设计
observer
模式。我想将B
订阅A
的一些事件。例如此代码应在B
的实例中 // pseudo code
A* observable = new A();
observable->addEventListener ( 'eventTitle' , functionName );
并且当
eventTitle
发生时A
调用functionName
的B
最佳答案
有两种方法可以调用指向成员函数的指针,以隐藏其起源:
class B {
double Sqrt(int what) { return std::sqrt((double)what); }
};
// in A:
std::tr1::function<double (int)> fn;
fn = std::tr1::bind(&B::Sqrt, &operations, std::tr1::placeholders::_1);
fn(3.1415);