私はテンプレートクラスの作成について読んでいて、それを持っていると思います..まあ、1つの厄介なバグを除けば、私には理解できません!
これは私がこれまでに持っているものです:
template<class T>
class CStateMachine
{
public:
// Constructor
CStateMachine(QByteArray smName);
private:
QByteArray _smName;
};
// Here is the constructor implementation
template <class T>
CStateMachine<T>::CStateMachine(QByteArray smName):
_smName(smName)
{
qDebug() << "New statemachine:" << _smName << endl;
}
// Now here is the usage called from normal class CRpeComms:
#include "cstatemachine.h"
...
CStateMachine<CRpeComms> rpeSm("test");
...
これにより、エラーが発生します。
unidentified reference to CStateMachine<CRpeComms>::CStateMachine(QByteArray)
注: 私は Qt を使用しているので、よく知らない場合は、qDebug() や std::out など、QByteArray を CString などと考えてください。
私は多くの例を見てきましたが、私のものは同じようです。コンストラクターの実装をヘッダー ファイルに移動すると (以下のように)、問題なく動作します...:
CStateMachine(QByteArray smName):
_smName(smName)
{
qDebug() << "new statemachine:" << _smName << endl;
}
だから私はここで何が間違っているのか分かりません...
どんな助けでも大歓迎です!