現時点では奇妙なことが起こっています。 VC++コンパイラを使用してテンプレートクラスを作成しようとしています。VC++クラステンプレートtypedef型で関数を実装する
私のクラスの中で私は明確にするためにいくつかのtypedefを得ました。私は私のHEADERFILE
template<typename T,
typename = typename std::enable_if<std::is_arithmetic<T>::value,T>::type>
class Integer
{
public:
typedef T value_type;
typedef Integer <value_type> Self;
typedef Self& SelfReference;
typedef Self* SelfRawPointer;
...
public:
SelfReference operator =(const SelfReference);
の外に持って実際の実装* .tcc - ファイル:
...
template<typename T> Integer<T>::SelfReference Integer<T>::operator =(const
Integer<T>::SelfReference rhs)
{
return this->assign(rhs);
};
...
私はこのようにそれを行うことによって、任意の問題を持っていないが、今のWindows上で、過去のgccでコンパイラは「SelfReference」という文句を言っています:C2061:構文エラー:識別子「SelfReference」
gccが過去に働いていたために何かが間違っていると私は気づいていません...インラインで関数を書くと、問題は表示されません。私は今、窓の上にこの種の問題があるのはなぜか不思議です!
template <typename T>
typename Integer<T>::SelfReference Integer<T>::operator=(const typename Integer<T>::SelfReference rhs) { blah; }
あなたもちょうどすなわち、SelfReference
使用することができますInteger<T>::
の右側には: