【发布时间】:2018-11-24 10:23:28
【问题描述】:
我有这个结构:
class A {
public:
int setI(int i){_i = i;}
private:
int _i;
}
class B {
public:
int setZ(int z){_z = z;}
private:
int _z;
}
class C : public A, public B {};
然后我想从其他地方的模板函数调用方法 setI 或 setZ
类似:
template <class P>
void myMethod(P &myclass, void (P::*setter) (const int)) const
{
int var = 9;
(myclass.*setter)(var);
}
我是这样使用这种方法的:
C c;
mymethod(c, &C::setI);
因为 setI 是在 A 中而不是在 C 中定义的,所以它失败了,有没有办法按照这个结构从 A 类或 B 类传递方法?
感谢和问候
【问题讨论】:
标签: c++ c++11 templates parameter-passing