2017-01-17 4 views
2

これはC++でのキュークラスの実装です。私が把握できないのは、削除された要素を返す関数の削除を欲しいということです。しかし、これらのエラーは次のように表示されます。 'delete'の前にunqualified-idが必要です ;メンバー宣言の最後にキュークラス内の非空削除メンバー関数

削除機能を削除すると、すべて正常に機能しますが、存在しない場合は機能しません。 私は、重み付けされていない無向グラフでbfsを使って最短経路を見つけようとしています。キュー、特に削除された頂点を返すキューが必要です。

class Queue 
    { 
    public: 
     Queue(int maxQueueSize):MaxSize(maxQueueSize) 
     { 
      queue=new int[MaxSize]; 
      front=rear=-1; 
     } 
     bool isFull() 
     { 
      if(rear==MaxSize-1) 
       return true; 
      else return false; 
     } 
     bool isEmpty() 
     { 
      if(front==rear) 
       return true; 
      else return false; 
     } 
     void add(const int& x) 
     { 
      if(isFull()) 
       return; 
      else 
        queue[++rear]=x; 
      } 
      int* delete() 
      { 
       int& x; 
       if(isEmpty()) 
        return 0; 
       else 
       { 
        x=queue[++front]; 
       } 
       return x; 
      } 
     private: 
      int front,rear; 
      int* queue; 
      int MaxSize; 
     }; 
+11

'delete'は予約済みのキーワードです。識別子にはそのような名前を使用できません。 –

+1

予約語[リンク](http://en.cppreference.com/w/cpp/keyword)のリストです。これらの名前を識別子として使用することはできません。 –

+4

'if(条件)trueを返します。それ以外はfalseを返します;'は反パターンです。代わりに 'return condition;'を書いてください! –

答えて

1

'delete'はC++の予約キーワードです。
予約語のリストhereを参照してください。

「削除」などとお勧めします。
さらに、std :: queue <>を使用するだけで、すでによく書かれテストされています。

+0

キュークラスのポップがvoidを返すため、STLを使用しませんでした。ありがとう:) – Sara

+0

これは仕様です。 std :: queue :: front()を呼び出して次の要素を取得し、次にstd :: queue :: pop()を呼び出してそれを削除する必要があります。 – roalz

関連する問題