2012-03-12 105 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

你需要的是一本好書。 – 2012-03-13 02:12:19

回答

1

當然。語法錯誤。它應該是:

towerControl.push_back(new Boeing); 

而且你還需要調用它的Tower成員裏面,可能是一個構造函數:

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

我看來,像你需要開始學習C的基礎++。

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

vector的函數push_back()不返回任何內容。它所做的只是接受一個參數被推入矢量中。所以你只需在push_back()語句中設置任何內容即可。

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

應該工作得很好。

PS:是否可以在類聲明的那一部分進行賦值?錯誤....

+0

不是。您不能只在類定義中編寫語句,並期望它們能夠工作。他們需要在上下文中。看到我的答案。 – 2012-03-12 23:26:32

+0

@LuchianGrigore:編輯:)編輯需要時間。 – Ajai 2012-03-12 23:27:08