如何修复派生类出现“声明缺少存储类或类型说明符”的错误?

3

我试图在派生类中初始化一个基类变量,但是却收到了一个错误:

 "this declaration has no storage class or type specifier"

我一直在用Visual Studio调试C++继承和派生类。我创建了主类"Food",其中包含protected变量,并希望派生一个类"Bread"。

当我尝试在"Bread"中初始化这些变量时,VS会报错。我感觉这是一个非常简单的问题,但不知道哪里出了错。

#include <string>
using namespace std;

class Food 
{
protected:
    string name;
    int cost;
    int calories;

public:
    Food(string name, int cost, int calories) {
    }
};

class Bread : public Food 
{
private:
    name = "";
    cost = 5;
    calories = 200;
public:

};

我期望Bread中的变量已经被初始化: name""(空),cost 为 "5",calories 为 "200"。

然而实际输出却是一个错误信息:

"this declaration has no storage class or type specifier"

不知道你是如何实例化它的,所以很难说。尝试发布一个最小可重现示例 - user10957435
这已经是一个 MRE 了,试着编译它吧 ;) - Khoyo
1个回答

4
我正在尝试在派生类中初始化基类变量!首先,在您提供的基类Food构造函数中初始化成员。
Food(std::string name, int cost, int calories)
    : name{ name }
    , cost{ cost }
    , calories{ calories }
{}

然后,在派生类Bread构造函数成员初始化列表中初始化基类成员:

class Bread : public Food 
{
public:
    Bread()
        :Food{ "", 5, 200 }
    {}
};

这将初始化 Food 成员变量

name = ""
cost = 5
calories = 200

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接