3

可能重复:
为什么在使用模板时会出现“未解析的外部符号”错误?

我正在制作一个链接列表。我正在使用外部迭代器。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)"

加上整个项目中的其他七个类似错误。

我在这里做错了吗?还是我做错了什么?

谢谢!

4

1 回答 1

0

如果我正确阅读了您的错误消息,您的 Iterator 将Node<T>作为输入,但是您正在应用double它,这是不适用的。要支持non-Node<T>类型,您需要专门化Iterator<T>.

public: void __thiscall list_1::Iterator<double>::operator++(void)"
                                         ^^^^^
于 2013-01-25T03:16:07.903 回答