声明模板类原型方法的方法头

时间:2014-12-03 02:04:01

标签: c++

标题文件:

#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'

我不确定这意味着什么,也不确定如何修复它。任何建议或帮助将不胜感激。

非常感谢你。

1 个答案:

答案 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?