Неопределенная ссылка на `LinkedList & lt; int & gt; :: push_front (int)

Возможный дубликат:
Почему я получаю ошибки «неразрешенный внешний символ» при использовании шаблонов?

LinkedList.h

#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include<iostream>

template<class T> class LinkedList;

//------Node------
template<class T>
class Node {
private:
T data;
Node<T>* next;
public:
Node(){data = 0; next=0;}
Node(T data);
friend class LinkedList<T>;

};//------Iterator------
template<class T>
class Iterator {
private:
Node<T> *current;
public:

friend class LinkedList<T>;
Iterator operator*();
};

//------LinkedList------
template<class T>
class LinkedList {
private:
Node<T> *head;public:
LinkedList(){head=0;}
void push_front(T data);
void push_back(const T& data);

Iterator<T> begin();
Iterator<T> end();

};#endif  /* LINKEDLIST_H */

LinkedList.cpp

#include "LinkedList.h"#include<iostream>using namespace std;

//------Node------
template<class T>
Node<T>::Node(T data){
this.data = data;
}//------LinkedList------
template<class T>
void LinkedList<T>::push_front(T data){

Node<T> *newNode = new Node<T>(data);

if(head==0){
head = newNode;
}
else{
newNode->next = head;
head = newNode;
}
}

template<class T>
void LinkedList<T>::push_back(const T& data){
Node<T> *newNode = new Node<T>(data);

if(head==0)
head = newNode;
else{
head->next = newNode;
}
}//------Iterator------
template<class T>
Iterator<T> LinkedList<T>::begin(){
return head;
}

template<class T>
Iterator<T> Iterator<T>::operator*(){

}

main.cpp

#include "LinkedList.h"
using namespace std;int main() {
LinkedList<int> list;

int input = 10;

list.push_front(input);
}

Привет, я довольно новичок в C ++, и я пытаюсь написать свой собственный LinkedList с использованием шаблонов.

Я очень внимательно следил за своей книгой, и это то, что я получил. Я получаю эту ошибку, хотя.

/main.cpp:18: неопределенная ссылка на `LinkedList :: push_front (int) ‘

Понятия не имею почему, какие идеи?

2

Решение

Вы используете шаблоны в своей программе. Когда вы используете шаблоны, вы должны написать код и заголовки в одном и том же файле, потому что компилятору необходимо сгенерировать код, в котором он используется в программе.

Вы можете сделать это или включить #inlcude "LinkedList.cpp" в main.cpp

Этот вопрос может помочь вам.
Почему шаблоны могут быть реализованы только в заголовочном файле?

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]