假設我有一個類:C++模板和分配
template <typename T, int N>
class FixedNum
{
public:
FixedNum& operator+= (const FixedNum& n);
};
我想定義一個operator+=
可以接受FixedNum<T, N2>
,其中N2
可能不等於N
。我該怎麼做?我對模板感到困惑,GCC認爲的原型不適用於我所做的任何類。
假設我有一個類:C++模板和分配
template <typename T, int N>
class FixedNum
{
public:
FixedNum& operator+= (const FixedNum& n);
};
我想定義一個operator+=
可以接受FixedNum<T, N2>
,其中N2
可能不等於N
。我該怎麼做?我對模板感到困惑,GCC認爲的原型不適用於我所做的任何類。
template <typename T, int N>
class FixedNum
{
public:
template <int N2>
FixedNum& operator+= (const FixedNum<T,N2>& n);
};
template<typename T, int N>
template<int N2>
FixedNum<T,N> & FixedNum<T,N>::operator+= (const FixedNum<T,N2>& n)
{
...
return(*this);
}
注意,這不能改變N;如果你想改變N,那麼你正在使用錯誤的方法。
你必須使它成爲一個模板:
template <int N2>
FixedNum& operator+= (const FixedNum<T, N2>& n);
下面是如何實施該方法: '模板
您需要兩個級別的模板:一個用於班級,另一個用於操作員。例如'template
FixedNum和FixedNum 是不同的類型。你需要一個輔助類來接受兩種不同的類型。 –
模板變量'N'是一個'int'。它可以採用任何'int'值。最後它的類型是'int'。 – HAL