C ++函子模板
|
给定以下类,该类仅将内部函子
f
映射到稍后要运行的函数:
class A {
private:
int (A::*f)(int);
int foo(int x) { return x; }
int bar(int x) { return x*2; }
public:
explicit A(bool foo=true) { f = foo ? &A::foo : &A::bar; }
int run(int x) { return (this->*f)(x); }
};
现在说我还有另一堂课,B
:
class B {
public:
int foo(int) { return x*x; }
};
和功能foo
:
int foo(int x) { return 0; }
我知道不可能分配A
并运行B::foo
或foo
,因为它们的原型不同:int (A::*)(int)
,int (B::*)(int)
和int (*)(int)
。
我要问的是,他们有什么办法使A::f
模板化,以使它们中的任何一个都可以?
没有找到相关结果
已邀请:
2 个回复
田损比报
慷祈霖黑
/
/
。它可以使用具有正确签名的任何函数对象(包括指针)。您可以创建使用
调用成员函数的函数对象,该软件包在同一软件包中可用。