2016-04-07 7 views
1

robot.h:11:20: error: expected identifier before numeric constant Queue SQ(10);メンバ変数の初期化は、エラー私は、この上のエラーを取得していますなぜ私は理解していない

struct Robot 
{ 
    string m_name; //robot name 
    Queue<string> SQ(10); //queue of services 
    int m_timer; //time til robot is done 
    string m_lastService; //most recent service 
}; 

を与えます。 (10)を取り除くと、デフォルトのコンストラクタが使用されて正常に動作します。ここにQueueクラスがあります。

template <typename T> 
class Queue : public AbstractQueue<T> 
{ 
    private: 
    T* m_array; 
    int m_front; 
    int m_back; 
    int m_capacity; 
    int m_size; 
    public: 
    Queue(); 
    Queue(int max); 
    void setMax(int max); 
    bool isEmpty() const; 
    const T& front() const throw (Oops); 
    const T& back() const throw (Oops); 
    void enqueue(const T& x); 
    void dequeue(); 
    void clear(); 
    ~Queue(); 
}; 

私はキュークラスの別の宣言を使用し、それがメインで働いていますが、何らかの理由で、それはここで、構造体では動作しませんが、私はあなたがすることができ、メイン

Queue<Robot> R(10); 

答えて

1

で宣言されたものですこのようにメンバ変数の初期化に使用されるデフォルト以外のコンストラクタを指定しないでください。

member initializer listというコンストラクタを指定して、使用するコンストラクタをQueueに指定できます。

struct Robot 
{ 
    string m_name; //robot name 
    Queue<string> SQ(); //queue of services 
    int m_timer; //time til robot is done 
    string m_lastService; //most recent service 
    Robot() : SQ(10) {} 
}; 

または使用default member initializer(11 C++以降):

Queue<string> SQ{10}; 
関連する問題