首次创建模板类的问题

时间:2013-06-12 12:21:16

标签: c++ template-classes

我一直在阅读有关创建模板类的内容,我想我已经拥有它......好吧,除了一个我无法想象的烦人的bug之外!

这是我到目前为止所做的:

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;
}

所以我不确定我在这里做错了什么......

非常感谢任何帮助!

0 个答案:

没有答案