1

わからないコンパイルエラーが発生します。それは言います:

Queue.h:18:23: エラー: 引数リストのないテンプレート名「キュー」の無効な使用 キュー.h:23:23: エラー: テンプレート名「キュー」の無効な使用引数リスト

誰でも助けることができますか?

#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;
}
4

1 に答える 1

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) { .... }
};

また、ヘッダファイルを入れるのは得策ではありませんusing namespace std。実際、どこにでも置くのはあまり良い考えではありません。

于 2013-05-22T05:07:28.870 に答える