【问题标题】:C++ Receiving error with pure virtual function, "variable or field 'x' declared as void" [closed]C ++接收纯虚函数错误,“变量或字段'x'声明为void”[关闭]
【发布时间】:2014-05-13 10:54:35
【问题描述】:

我是继承/抽象类/多态的新手。作为记录,我以前能够使用抽象类的派生对象编译和运行程序,但由于某种原因,我现在无法这样做。

这是抽象基类中的纯虚函数 声明“AerialVehicle.h”:

virtual void fly = 0; //error: variable or field 'fly' declared void

现在这里是派生类“TF18.h”

void TF18::fly()
{
cout << "\n\t--Flying--\n"
     << getName() << " is flying...\n"
     << "Wingspan: " << getWingspan() << "\n"
     << "Max Altitude: " << getMaxAlt() << "\n"
     << "Seats: " << getSeats() << "\n"
     << "Engines: " << getEngines() << "\n";
}

这个程序只是更清楚地理解这些概念的一种手段。我没有向 TF18 添加任何其他成员函数。这让我感到困惑,因为到目前为止我已经能够创建这种风格的程序。纯虚函数绝对需要返回值吗?

我正在使用带有 GNU GCC 编译器的 CodeBlocks。我也尝试过其他编译器,甚至使用各种编译器将代码复制/粘贴到 Orwell DevC++,但无济于事:(

最后,我在标题中使用了 ifndef/define/endif。

【问题讨论】:

  • 如果fly应该是一个函数,它必须是fly()

标签: c++ inheritance polymorphism abstract-class


【解决方案1】:

你忘记了函数声明中的括号

virtual void fly() = 0;
                ^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2021-10-18
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多