3
可能重複:
Why do I get 「unresolved external symbol」 errors when using templates?解析外部符號++模板
我想提出一個LinkedList。我正在使用外部迭代器。 Iterator類是一個模板,我正在Iterator.h中實現我的方法。
這裏是模板:1>list_test.obj : error LNK2019: unresolved external symbol "public: void __thiscall list_1::Iterator<double>::operator++(void)"
加上約七其他類似的錯誤在整個項目:
#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*()
{
}
}
當我嘗試編譯我收到此錯誤信息。
我在這裏做錯了什麼?或者是我做錯了什麼?
謝謝!
是'list_1'類還是命名空間? 「list_1」定義內部還是外部的'Iterator'類定義? 'list_1'定義之內還是之外的'operator ++'定義? – aschepler
我沒有在'operator'實現前看到'inline',所以我顯然不在模板聲明中的**頭文件**中。除非這是全部在* single * source文件中,否則你不會在沒有明確實例化的情況下得到你想要的。 – WhozCraig
對不起,Iterator位於命名空間list_1中。 'template void Iterator :: operator ++()'也在list_1中。 –
KKendall