非統合テンプレート定数を初期化しようとしています。
コードの下を見つけてください:
#ifndef _EXETENDED_CLASS_H
#define _EXETENDED_CLASS_H
template<class T>
class BaseClass
{
public:
BaseClass();
~BaseClass();
};
template <class T>
BaseClass<T>::BaseClass()
{}
template <class T>
BaseClass<T>::~BaseClass()
{}
template<class T>
class ExtendedClass:public BaseClass<T>
{
public:
typedef ExtendedClass<T>* position;
static const position NULLPOSITION;
ExtendedClass();
~ExtendedClass();
private:
position _successivo;
};
template<class T>
const ExtendedClass<T>::position ExtendedClass<T>::NULLPOSITION = 0;
template <class T>
ExtendedClass<T>::ExtendedClass()
{}
template <class T>
ExtendedClass<T>::~ExtendedClass()
{}
#endif
問題は線にあります
template<class T>
const ExtendedClass<T>::position ExtendedClass<T>::NULLPOSITION = 0;
非積分型であるため、定数をインラインで初期化できません。
私がオンラインで読んだことから、.cppファイルでconst初期化を移動した場合、問題はなくなったようです。ただし、テンプレート化されたクラスを扱っているため、これを行うことはできません。以下に詳述するようなエラーが発生します。
ExtendedClass.h:43: error: expected init-declarator before "ExtendedClass"
ExtendedClass.h:43: error: expected `;' before "ExtendedClass"
make: *** [ExtendedClass.o] Error 1
誰かが私のためにそれを見てくれませんか?よろしくお願いします。