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 中?
我的问题是,我允许传递给 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)