有2个模板类A和B有2个私有成员a1,a2和b1,b2。指向方法和模板的指针问题,C++
template <typename T>
class A
{
private:
T a1, a2;
public:
T getA1() const {return a1;}
T getA2() const {return a2;}
};
template <typename T>
class B
{
private:
T b1, b2;
public:
T getB1() const {return b1;}
T getB2() const {return b2;}
};
在类Test中,需要2个指向getter的指针。
class Test
{
private:
template <typename T>
static T (*getFirst)();
template <typename T>
static T (*getSecond)();
}
template <typename T>
T (* Test::getFirst)() = &A<T>::getA1; //Pointer to getA1, error
template <typename T>
T (* Test::getSecond)() = &B<T>::getB2; //Pointer to getB2, error
int main
{
A <double> a;
B <double> b;
double c = a.getFirst + b.getSecond;
}
T表示基本数据类型...是否有可能实现这个代码,而专业化(即指针类模板成员)或那些“指针”应为专业?感谢任何例子...
我试图编写一个答案,但失败的原因之一:我不明白你打算用你的类测试。你提供了一个有错误的定义,但是你不会在任何地方使用它。解决这些错误的方法很大程度上取决于您打算如何使用它。下面的一些答案可能对您有用,但为了得到正确的答案,您需要提供一个Test的示例用法。 – 2011-02-12 15:51:16