构建项目时未解决的外部符号错误

时间:2015-03-08 17:27:47

标签: c++ linker linked-list unresolved-external

我需要实现一个链表,我在代码中找不到错误。我知道unsolved external symbol意味着我可能有一个函数声明而没有实现,但我查看了我的代码,我无法看到缺失的内容。

我得到的错误是LNK2019: unresolved external symbol "public: __thiscall ListElement::ListElement(int)" (??0ListElement@@QAE@H@Z) referenced in function "public: __thiscall List::List(void)" (??0List@@QAE@XZ)

List.h

#ifndef LIST_H
#define LIST_H
#include "ListElement.h"

class List {
public:

ListElement *head; // wskaźnik na pierwszy element;
ListElement first = NULL; // pierwszy element
int total = 0;

List();

int get(int i);

void addFirstElement(int x);

void addLastElement(int x);

void addRandomElement(int x);

void removeFirstElement();

void removeLastElement();

void removeRandomElement();

private:

};

#endif

List.cpp

#include "stdafx.h"
#include "List.h"

List::List(){
    head = &first;
}

int List::get(int i){ return -1; }

void List::addFirstElement(int x){
    ListElement newEl = ListElement(x);
    newEl.next = &first;
    head = &newEl;
    total++;
}

void List::addLastElement(int x){
    ListElement* p = first.next;
    while (p != NULL){
        p = p->next;
    }
    ListElement newEl(x);
    p = &newEl;
}

void List::addRandomElement(int x){
    int pos = rand() % total;
    //TODO
}

void List::removeFirstElement(){
}

void List::removeLastElement(){
    ListElement last = get(total - 1);
    delete &last;
    total--;
    last = get(total - 1);
    last.next = NULL;
}

void List::removeRandomElement(){
}

ListElement.h

#ifndef LIST_ELELENT_H
#define LIST_ELEMENT_H

class ListElement{
public:
ListElement(int x);
int data; // wartość
ListElement * next; // wskaźnik następnego elementu
private:
};
#endif

ListElement.cpp

#include "ListElement.h"
ListElement::ListElement(int x){
data = x;
}

我意识到这可能是一个重复的问题,但我找到的答案都没有帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

我猜您忘记将所有* .cpp文件链接在一起。

尝试这样:g++ List.cpp ListElement.cpp YourMain.cpp -o ListProgramm