无法使用没有参数列表的模板名称队列

时间:2013-05-22 05:05:28

标签: c++ compiler-errors

我收到了一个我无法弄清楚的编译错误。它说:

Queue.h:18:23:错误:无法使用模板名称“Queue”而没有参数列表 Queue.h:23:23:错误:无法使用模板名称“Quueue”而没有参数列表

有人可以帮忙吗?

#if !defined QUEUE_SIZE
#define QUEUE_SIZE 30
#endif
using namespace std;

template <class TYPE> class Queue
{
 private:
  TYPE *array;
 public:
  Queue(Queue& other);
  Queue();
  ~Queue();
  Queue& operator=(Queue other);
  TYPE pushAndPop(TYPE x);
};

template <class TYPE> Queue::Queue()
{
  array=new TYPE[size];
}

template <class TYPE> Queue::~Queue()
{
  delete [] array;
}

1 个答案:

答案 0 :(得分:2)

您的语法略有偏差。你需要:

template <class TYPE> Queue<TYPE>::Queue()
{
...
}

template <TYPE>
Queue<TYPE>& operator=(Queue<TYPE> other) { ... }

虽然请注意在大多数情况下你可能应该通过const引用(当然不是非const引用):

template <TYPE>
Queue<TYPE>& operator=(const Queue<TYPE>& other) { ... }

或者,您可以内联实现:

template <class TYPE> class Queue
{
 private:
  TYPE *array;
 public:
  Queue(Queue& other);
  Queue() { array = new TYPE[size];}
  ~Queue() { delete [] array; }
  Queue& operator=(Queue other) { .... }
  TYPE pushAndPop(TYPE x) { .... }
};

此外,它是not a good idea to put using namespace std in a header file。实际上,它是not really a good idea to put it anywhere