我正在尝试创建一个简单的链表,当我开始向主函数添加代码时,我遇到了LNK2019。它之前正在编译,但是当我向我的main添加代码时,我遇到了一些错误。我的所有头文件都包含在我的主CPP文件中,并且我检查了循环包含。我暂时没有使用过C ++,如果这看起来很明显,那就很抱歉。我在制作项目时使用了预编译的头文件选项,如果这意味着什么。我搞砸了什么?
错误:
1>RandomCPP.obj : error LNK2019: unresolved external symbol "public: __thiscall List<int>::List<int>(void)" (??0?$List@H@@QAE@XZ) referenced in function _wmain
1>RandomCPP.obj : error LNK2019: unresolved external symbol "public: __thiscall List<int>::~List<int>(void)" (??1?$List@H@@QAE@XZ) referenced in function _wmain
1>RandomCPP.obj : error LNK2019: unresolved external symbol "public: void __thiscall List<int>::add(int const &)" (?add@?$List@H@@QAEXABH@Z) referenced in function _wmain
1>RandomCPP.obj : error LNK2019: unresolved external symbol "public: int * __thiscall List<int>::get(int)const " (?get@?$List@H@@QBEPAHH@Z) referenced in function _wmain
List.h:
#pragma once
#include "ListNode.h"
template<class T> class ListNode;
template<class T>
class List
{
public:
List<T>();
~List<T>();
void add(const T&);
void insert(int, const T&);
void clear();
bool isEmpty() const;
T* get(const int) const;
int getLength() const;
void foreach(void(*foo)(T)) const;
T* operator[](const int index) const;
private:
ListNode<T>* firstElement;
ListNode<T>* lastElement;
//Utility
ListNode<T>* getNewNode(const T&);
ListNode<T>* getNode(int index) const;
};
ListNode.h:
#pragma once
template<class T> class List;
template <class T>
class ListNode
{
friend class List < T > ;
public:
ListNode(const T& data);
~ListNode();
T getData() const;
private:
T data;
ListNode<T> *nextPtr;
};
RandomCPP.cpp(主文件):
#include "stdafx.h"
#include "List.h"
#include "ListNode.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
List<int> values = List<int>();
values.add(0);
values.add(1);
values.add(2);
values.add(3);
values.add(4);
cout << values.get(0) << endl
<< values.get(1) << endl
<< values.get(2) << endl
<< values.get(3) << endl
<< values.get(4) << endl << endl;
system("pause");
return 0;
}
stdafx.h中:
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
我有一个List.cpp文件和一个ListNode.cpp文件,每个文件都包含在相应的.h文件中声明的类的定义,没有别的。除stdafx.h的包含外,stdafx.cpp文件为空。