标题文件:
#include <iostream>
using namespace std;
template <class A_Type> class Queue
{
public:
Queue(int = 10);
Queue(const Queue<A_Type>&);
~Queue();
Queue& operator=(const Queue&);
bool enqueue(A_Type);
bool dequeue(A_Type&);
bool empty() const;
bool full() const;
bool clear();
A_Type * getData();
bool operator==(const Queue&) const;
friend ostream& operator<<(ostream&, const Queue<A_Type>&);
private:
int max;
int front;
int rear;
A_Type *data;
};
我尝试在Queue.cpp中声明方法(错误显示在第一行):
Queue<class A_Type>::Queue(const Queue<A_Type> &q)
{
front = q.front;
rear = q.rear;
max = q.max;
data = new A_Type[max];
data = q.data;
}
Eclipse正在抛出错误:
forward declaration of 'class A_Type'
我不确定这意味着什么,也不确定如何修复它。任何建议或帮助将不胜感激。
非常感谢你。
答案 0 :(得分:1)
对于类声明之外的模板方法定义,您的语法是错误的。
template <class A_Type>
Queue<A_Type>::Queue(const Queue<A_Type> &q)
这将照顾你现在得到的错误。您可能会发现您遇到问题,但尝试在CPP文件中单独定义模板方法。见Why can templates only be implemented in the header file?