关于单向链表的一点问题
初学数据结构,在实现单向链表时,总是无法编译,代码如下:
Node1.h
#ifndef NODE1_H
#define NODE1_H
#include <iostream>
template<class T>
class Node1 {
public:
T data;
Node1<T>* next;
Node1() {
next = NULL;
}
};
#endif
Linklist1.h
#ifndef LINKLIST1_H
#define LINKLIST1_H
#include "Node1.h"
template <class T>
class LinkList1 {
private:
Node1<T>* head;
void Init();
public:
LinkList1();
~LinkList1();
};
#endif
LinkList1.cpp
#include "LinkList1.h"
template <class T>
void LinkList1<T>::Init() {
head = new Node1<T>;
}
template <class T>
LinkList1<T>::LinkList1() {
Init();
}
template <class T>
LinkList1<T>::~LinkList1() {
delete head;
}
为了各位查看方便,所有其他函数都没有贴上来;
主函数如下:
#include <iostream>
#include "LinkList1.h"
using namespace std;
int main() {
LinkList1<int> myList;
return 0;
}
主函数中想要声明一个int型的链表,编译时发生如下错误:
obj\Debug\C++\test\main.o||In function `main':|
E:\C++\test\main.cpp|7|undefined reference to `LinkList1<int>::LinkList1()'|
E:\C++\test\main.cpp|9|undefined reference to `LinkList1<int>::~LinkList1()'|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 1 seconds) ===|
但是明明构造函数和析构函数我都写了的,那这个错误到底应该怎么样修改呢,求各位大神解释
[解决办法]
把Linklist1的声明和实现放到一个文件中试一下
或者在.h文件中 include"LinkList1.cpp"
看看可不可以