我很奇怪,爲什麼下面的人爲的例子代碼在Visual Studio 2005中完全正常,但會產生在GCC錯誤(「沒有匹配的函數來調用」呼叫插值時() 如下所示)。GCC 4.0:「沒有匹配的函數來調用」模板功能
另外,我該如何解決這個問題?看來,錯誤消息只是一個通用消息,因爲GCC沒有針對問題的實際原因提供更具體的消息,並且它必須輸出一些內容。對於如何在沒有一些非常醜陋的解決方法的情況下繼續移植這個類,我有點不知所措。
namespace Geo
{
template <class T>
class TMyPointTemplate
{
T X,Y;
public:
inline TMyPointTemplate(): X(0), Y(0) {}
inline TMyPointTemplate(T _X,T _Y): X(_X), Y(_Y) {}
inline T GetX()const { return X; }
inline T GetY()const { return Y; }
//...
template<T> TMyPointTemplate<T> Interpolate(const TMyPointTemplate<T> &OtherPoint)const
{
return TMyPointTemplate((X+OtherPoint.GetX())/2,(Y+OtherPoint.GetY())/2);
}
};
typedef TMyPointTemplate<int> IntegerPoint;
}
Geo::IntegerPoint Point1(0,0);
Geo::IntegerPoint Point2(10,10);
Geo::IntegerPoint Point3=Point1.Interpolate(Point2); //GCC PRODUCES ERROR: no matching function for call to 'Geo::TMyPointTemplate<int>::Interpolate(Geo::IntegerPoint&)'
感謝您的幫助,
阿德里安
優秀的答案。非常感謝你的幫助! :-) – 2009-02-03 16:20:05