将非参数作为参数传递给基类

问题描述 投票:0回答:1
class Food
{
    int Kg, Quality;
public:
    Food(int kg, int quality)
    {
        Kg = kg;
        Quality = quality;
    }
    ~Food(void) {}
};

class Pizza : public Food
{
public:
    int Flavor;

    // Use of undeclared identifiers 'tempKg' 'tempQuality' [Error]
    Pizza(int flavor) : Food(tempKg, tempQuality)
    {
        // I would like to know if i can use these variables as Food arguments
        int tempKg=0, tempQuality=0;
        int Flavor = flavor;
    }

    // This works as it should
    /* Pizza(int flavor, int kg, int quality) : Food(kg, quality)
    {
        int Flavor = flavor;
    } */
};

我的问题是,我允许传递给 Food 构造函数的参数是否只能是 Pizza 构造函数中声明的参数?

如果不需要,我如何将不是 Pizza 参数的参数传递到 Food 中?

c++ inheritance constructor
1个回答
0
投票

我的问题是,我允许传递给 Food 构造函数的参数是否只能是 Pizza 构造函数中声明的参数?

在调用

Food
的构造函数时,您试图传递尚不存在的变量。它们对于 Pizza 的构造函数的
body
来说是本地的,但必须先初始化
Food
,然后才能进入
Pizza
的构造函数主体。

如何将不是 Pizza 参数的参数传递到 Food 中?

你有两个选择:

  • 将它们添加到 Pizza 的构造函数中并使其成为可选:

    Pizza(int flavor, int kg = 0, int quality = 0) : Food(kg, quality)

  • 只需对它们进行硬编码:

    Pizza(int flavor) : Food(0, 0)

© www.soinside.com 2019 - 2024. All rights reserved.