std::function<>
当 C++11 不可用时,应该使用什么构造作为代理?
替代方案基本上应该允许从另一个类访问一个类的私有成员函数,如下例所示(不使用 std::function 的其他特性)。Foo 类是固定的,不能改变太多,我只能访问类 Bar。
class Foo {
friend class Bar; // added by me, rest of the class is fixed
private:
void doStuffFooA(int i);
void doStuffFooB(int i);
};
class Bar {
public:
Bar( Foo foo, std::function< void (const Foo&, int) > func ) {
myFoo = foo;
myFooFunc = func;
};
private:
doStuffBar( const &Foo foo ) {
myFooFunc( foo, 3 );
}
Foo myFoo;
std::function< void (const Foo&, int) > myFooFunc;
}
int main() {
Foo foo(...);
Bar barA( foo, &Foo::doStuffFooA );
Bar barB( foo, &Foo::doStuffFooB );
...
}