可能重复:
Why do I get “unresolved external symbol” errors when using templates?
我正在制作一个linkList。我正在使用外部迭代器。 Iterator类是一个模板,我正在Iterator.h中实现我的方法。
以下是模板:
#pragma once
#include "Node.h"
namespace list_1
{
template<typename T>
class Iterator
{
public:
Iterator<T> (Node<T> *np);
void operator++();
bool is_item();
T operator* ();
private:
Node<T>* n;
};
template<typename T>
Iterator<T>::Iterator (Node<T> *np)
{
}
template<typename T>
void Iterator<T>::operator++()
{
}
template<typename T>
bool Iterator<T>::is_item()
{
return false;
}
template<typename T>
T Iterator<T>::operator* ()
{
}
}
我在尝试编译时收到此错误消息:1>list_test.obj : error LNK2019: unresolved external symbol "public: void __thiscall list_1::Iterator<double>::operator++(void)"
另外还有整个项目中的其他七个类似错误。
我在这里做错了吗?或者是我做错了什么?
谢谢!
答案 0 :(得分:0)
如果我正确阅读了您的错误消息,则Iterator会将Node<T>
作为输入,但是您将double
应用于此{}不适用。要支持non-Node<T>
类型,您需要专门化Iterator<T>
。
public: void __thiscall list_1::Iterator<double>::operator++(void)"
^^^^^