有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