首页 > 解决方案 > 如何修复派生类给出“声明没有存储类或类型说明符”错误?

问题描述

我正在尝试在派生类中初始化基类变量,但是却出现错误:

 "this declaration has no storage class or type specifier"

我一直在修改 Visual Studio 中的 C++ 继承和派生类。我用变量制作了主类“ Foodprotected并想派生一个类“ 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要初始化的变量: nameas ""(空),costas“ 5”,caloriesas“ 200”。

输出是一个错误:

"this declaration has no storage class or type specifier"

标签: c++classc++11inheritancemember-initialization

解决方案


我正在尝试在派生类中初始化基类变量!

首先,初始化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

推荐阅读