我尝试使用以下内容创建类Queue<T>
的新对象:
Queue<char[40]> *q = new Queue<char[40]>(100);
然后,我想在另一个类构造函数上使用这个q
:
Interface<char[40]> i(q);
如果我只是使用它,我会收到错误invalid conversion from ‘Queue<char [40]>*’ to ‘int’
,我想这意味着我试图传递q的值,这是指向它的指针而不是实际值。精细。然后我重新定义了Interface<T>
构造函数来接收指针而不是值本身,所以签名是
Interface(DataStructure<T>& q);
由于Queue扩展了DataStructure。出于某种原因,现在q
的实例化失败了:
undefined reference to `Queue<char [40]>::Queue(int)
但我很确定我已经用INT参数
编写了构造函数方法template<typename T>
Queue<T>::Queue(int size): DataStructure<T>(size) {
std::cout << size << std::endl;
}
为什么我得到这个错误呢?玩指针只是弄得一团糟,我无法想办法现在做什么。
答案 0 :(得分:3)
此代码Queue<T>::Queue(int size)
建议您将定义放在源文件中。如果使用模板,则所有代码都必须位于头文件中。 (还有其他方法,但这是最简单的方法)。