我有一类具有一些非常相似的成员函数f_a
,f_b
和f_c
的类。
class A {
public:
double f_a() {return 1.0;}
double f_b() {return 2.0;}
double f_c() {return 3.0;}
template <double (A::*any_f)()>
double my_f() {
return any_f()
}
}
所以我的问题是,是否可以在不使这些成员函数静态化的情况下以这种方式使用该类。
int main() {
A a;
a.my_f<&A::f_a>();
a.my_f<&A::f_b>();
a.my_f<&A::f_c>();
}
提前谢谢!
答案 0 :(得分:6)
我认为这就是你想要的
class A {
public:
double f_a() {return 1.0;}
double f_b() {return 2.0;}
double f_c() {return 3.0;}
template <double (A::*any_f)()>
double my_f() {
return (this->*any_f)();
}
};
int main() {
A a;
a.my_f<&A::f_a>();
a.my_f<&A::f_b>();
a.my_f<&A::f_c>();
}