2012-03-12 26 views
0

私はこのerorrを取得しています:VC++を - この宣言は、ライン内のストレージクラスや型の指定子がありません。VC++は - この宣言はないストレージ・クラスまたは型指定

towerControl.push_back() = new Boeing; 

誰かが間違って何が起こっているか指摘することができます?ありがとう。

#include <iostream> 
#include <vector> 
using namespace std; 

class Aircraft { 
public: 
    virtual void disp() { cout << "I'm an aircraft\n"; } 
    virtual ~Aircraft() { cout << "Aircraft::Destructor\n"; } 
}; 

class Boeing: public Aircraft { 
public: 
    void disp() { cout << "I'm a Boeing\n"; } 
    ~Boeing() { cout << "Boeing::Destructor\n"; } 
}; 

class Airbus: public Aircraft { 
public: 
    void disp() { cout << "I'm an Airbus\n"; } 
    ~Airbus() { cout << "Airbus::Destructor\n"; } 
}; 

class Tower { 
public: 
    vector <Aircraft*> towerControl; 
    towerControl.push_back() = new Boeing; 
    towerControl.push_back() = new Airbus; 
    ~Tower() { cout << "Tower::Destructor\n"; } 
}; 

int main() { 
    Tower T; 
} 
+0

あなたが必要とするものは、まずは良い本です。 –

答えて

1

です。構文が間違っています。それは次のようになります。おそらく

towerControl.push_back(new Boeing); 

そして、あなたはまた、Towerの部材の内部にそれを呼び出す必要があり、コンストラクタ:あなたはC++の基礎を学び始める必要があるよう

class Tower { 
public: 
    vector <Aircraft*> towerControl; 
    Tower() 
    { 
     towerControl.push_back(new Boeing); 
     towerControl.push_back(new Airbus); 
    } 
    ~Tower() { cout << "Tower::Destructor\n"; } 
}; 

は私には思えます。ベクトルの

1
towerControl.push_back() = new Boeing; 
towerControl.push_back() = new Airbus; 

push_back()関数は何も返しません。それが行うのは、ベクトルにプッシュされるパラメータを受け入れることだけです。したがって、あなたは文字通りpush_back()ステートメントで何も設定していません。

towerControl.push_back(new Boeing); 
towerControl.push_back(new Airbus); 

正常に動作するはずです。

PS:割り当てが可能なクラス宣言の一部でますか?エラー....

+0

本当にありません。クラス定義に文を書くだけで、それらが動作することは期待できません。彼らは文脈の中にいる必要があります。私の答えを見てください。 –

+0

@LuchianGrigore:Edited :)編集に時間がかかりました。 – Ajai