gpt4 book ai didi

c++ - 只继承父类构造函数的部分参数

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:24 26 4
gpt4 key购买 nike

我有以下类,我只希望继承的类B只有父类A的一些参数

class A{
private:
int quantity;
int price;
protected:
char *name;
char *category;
public:
A(int quantity, int price, char *name, char* category)
{ } // CONSTRUCTOR

};


class B: public A
{
private:
char *location;
public:
B(int quantity, int price, char *name, char* category, char *location) :A(quantity, price,name, category)
};

我想做的是让 B 类只继承 A 的名称和类别,如下所示:

 B(char *name, char* category, char *location) :A(name, category)

但它不起作用,我认为将这些属性设为私有(private)可以解决我的问题,但事实并非如此。有没有办法做到这一点,或者我必须创建另一个具有所需属性的类?

最佳答案

解决方案 1:您可以为 A 创建另一个仅采用这两个参数的构造函数:

A(char *name, char* category) {...} 
...
B(char *name, char* category, char *location) :A(name, category) {...}

解决方案 2:您只能为 A 保留一个构造函数(与您制作的相同)但是 quantity 具有默认值price :

A(char *name, char* category, int quantity = 0, int price = 0) {...}
// Notice that the parameters that have default values must come at
// the end of the param list

...
B(char *name, char* category, char *location) :A(name, category) {...}

关于c++ - 只继承父类构造函数的部分参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com