【发布时间】:2014-09-04 16:37:41
【问题描述】:
全部!
我有一些类层次结构
class A {public: virtual void foo(int, T*) = 0; virtual void foo1(int, T*) = 0;};
class B : public A {public: void foo(int, T*) override; void foo1(int, T*) override;};
class C : public B {public: void foo(int, T*) override; void foo1(int, T*) override;};
在客户端代码中
class D{void client_foo(A* pA, bool, T*);};
void D::client_foo(A* pA, bool b, T* pT)
{
if (b) pA->foo(1050, pT);
else pA->foo1(5010, pT);
}
我想引入新函数void D::client_helper(???),它将实现pA、int 值、pT 和指向要调用的class A 方法的指针。
所以,D::client_foo(...) 可以改写为:
void D::client_foo(A* pA, bool b, T* pT)
{
if (b) client_helper(pA, 1050, pT, std::mem_fn(&A::foo));
else client_helper(pA, 5010, pT, std::mem_fn(&A::foo1));
}
问题是:D::client_helper() 应该有什么签名?
【问题讨论】:
-
为什么你的类定义过于紧凑?
标签: c++ c++11 member-function-pointers