【问题标题】:VC++ -- This declaration has not storage class or type specifierVC++——这个声明没有存储类或类型说明符
【发布时间】:2012-03-12 23:20:34
【问题描述】:

我收到此错误: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;
}

【问题讨论】:

  • 你需要的是一本好书。

标签: c++ inheritance


【解决方案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++ 的基础知识。

【讨论】:

    【解决方案2】:
    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:可以在类声明的那部分进行赋值吗?呃……

    【讨论】:

    • 并非如此。您不能只在类定义中编写语句并期望它们起作用。他们需要在上下文中。看我的回答。
    • @LuchianGrigore:已编辑 :) 编辑需要时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多