我需要实现一个链表,我在代码中找不到错误。我知道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;
}
我意识到这可能是一个重复的问题,但我找到的答案都没有帮助我解决这个问题。
答案 0 :(得分:1)
我猜您忘记将所有* .cpp文件链接在一起。
尝试这样:g++ List.cpp ListElement.cpp YourMain.cpp -o ListProgramm