为什么我的带有模板功能的单元出现以下情况:
C:/Users/Alex/CLionProjects/untitled104/main.cpp:5:对`Queue :: Queue(int)'的未定义引用
C:/Users/Alex/CLionProjects/untitled104/main.cpp:6:对“ Queue :: insert_after(int,int)”的未定义引用
C:/Users/Alex/CLionProjects/untitled104/main.cpp:7:对`Queue :: insert_after(int,int)'的未定义引用
C:/Users/Alex/CLionProjects/untitled104/main.cpp:8:对`Queue :: insert_after(int,int)'的未定义引用
C:/Users/Alex/CLionProjects/untitled104/main.cpp:9:对“ Queue :: getSize()”的未定义引用
C:/Users/Alex/CLionProjects/untitled104/main.cpp:10:对`Queue :: getNode(int)'的未定义引用
C:/Users/Alex/CLionProjects/untitled104/main.cpp:10:对`Node :: getValue()'的未定义引用
请告诉我如何解决。
main.cpp
#include <iostream>
#include "Queue.h"
int main() {
Queue<int> tmp(2);
tmp.insert_after(0,0);
tmp.insert_after(1,1);
tmp.insert_after(2,9);
for (int i = 0; i <= tmp.getSize(); ++i)
printf("%i",tmp.getNode(i)->getValue());
return 0;
}
Queue.cpp
#include "Queue.h"
template<typename T>
T Node<T>::getValue() {
return nullptr;
}
template<typename T>
void Node<T>::setValue(T new_value) {
}
template<typename T>
void Node<T>::deleteNode() {
}
template<typename T>
Node<T> *Node<T>::getNext() {
return nullptr;
}
template<typename T>
Node<T> *Node<T>::getBack() {
return nullptr;
}
template<typename T>
Queue<T>::Queue(T value) {
}
template<typename T>
Node<T> *Queue<T>::getFirst() {
return nullptr;
}
template<typename T>
Node<T> *Queue<T>::getNode(int position) {
return nullptr;
}
template<typename T>
unsigned int Queue<T>::getSize() {
return 0;
}
template<typename T>
Node<T> *Queue<T>::insert_after(int position, T value) {
return nullptr;
}
Queue.h
#ifndef UNTITLED104_QUEUE_H
#define UNTITLED104_QUEUE_H
#include <vector>
#include <cstdio>
using namespace std;
template <typename T>
class Node{
private:
T value;
public:
Node *next_node, *back_node;
Node():next_node(NULL),back_node(NULL){};
Node(T new_value):value(new_value),next_node(NULL),back_node(NULL){};
T getValue();
void setValue(T new_value);
void deleteNode();
Node<T>* getNext();
Node<T>* getBack();
};
template <typename T>
class Queue{
private:
Node<T>* firstNode=NULL;
unsigned size=0;
public:
Queue(T value);
Node<T>* getFirst();
Node<T>* getNode(int position);
unsigned int getSize();
Node<T>* insert_after(int position, T value);
};
#endif //UNTITLED104_QUEUE_H