2012-03-12 1 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); 

잘 작동해야합니다.

추신 : 클래스 선언 부분에서 과제가 가능합니까? 오류 ....

+0

아닙니다. 클래스 정의에 명령문을 작성하고 작동시킬 수는 없습니다. 그들은 맥락에 있어야합니다. 내 대답을 보라. –

+0

@LuchianGrigore : 편집 됨 : 편집하는 데 시간이 걸렸습니다. – Ajai