C ++链接器错误 - 定义两次

时间:2015-03-15 02:05:29

标签: c++ header linker

首先,我是实例化文件,标题和源文件的新手。 我试图让我的代码进行编译,但我仍然遇到链接器错误,它说我定义了两次。

我有6个文件:   - Instantiation.cpp Lab5.cpp Students.cpp Queue.cpp Students.h Queue.h

实例化:

#include "Students.cpp"
#include "Lab5.cpp"
#include "Queue.cpp"

template class Queue<int>;
template class QueueNode<int>;
template class Queue < Students* >;
template class QueueNode < Students* >;

Lab5:

#include "Queue.h"
#include "Students.h"
#include <iostream>
using namespace std;
int main(){
Queue <Students*> studentQueue;
Queue <int> integerQueue;
return 0;
}

Students.cpp:

#include "Students.h"
Students::Students(){
}
void Students::printStudent(){
}

Queue.cpp:

#include "Queue.h"
template <class DataType>
Queue<DataType>::Queue(int i){
i = queueSize;
}
template <class DataType>
Queue<DataType>::~Queue(){
}
template <class DataType>
void Queue<DataType>::enQueue(const DataType){
}
template <class DataType>
DataType Queue<DataType>::deQueue(){
return 0;
}
template <class DataType>
DataType Queue<DataType>::topQueue() const {
return 0;
}
template <class DataType>
bool Queue<DataType>::isEmpty() const {
return true;
}
template <class DataType>
bool Queue<DataType>::isFull() const{
return true;
}

Students.h:

#ifndef STUDENTS_H
#define STUDENTS_H
class Students{
public:
char lastName[20];
char firstName[20];
int ID; // ID
Students(); // constr
void printStudent(); // print info
};
#endif

Queue.h:

#ifndef QUEUE_H
#define QUEUE_H

template <class DataType>
class QueueNode {
public:
    DataType data;
    QueueNode<DataType> *next;
};
template <class DataType>
class Queue {
private:
    QueueNode<DataType> *front;
    QueueNode<DataType> *back;
    int queueSize; // size of a Queue
    int queueCnt; // elem count in a Queue
public:
    Queue(int = 10); // class constr. - initialize vars
    ~Queue(); // class destructor - remove all mem space used by queue elems
    void enQueue(const DataType); // add item to back of queue
    DataType deQueue(); // remove first item from queue and return its value
    DataType topQueue() const; // return the value of the first item in the queue
    bool isEmpty() const; // returns true if there are no elems in the queue
    bool isFull() const; // returns true if no system mem for a new queue node
};
#endif

这是输出: http://i.imgur.com/cAPdtKG.png

请帮忙。 我不知道为什么它认为我定义了两次。

0 个答案:

没有答案