奇怪的未解决的外部符号错误(LNK2019)

时间:2014-08-24 03:53:42

标签: c++ visual-studio-2013 compiler-errors

我正在尝试创建一个简单的链表,当我开始向主函数添加代码时,我遇到了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文件为空。

0 个答案:

没有答案