gpt4 book ai didi

c++ - 如何在C++中的子类的构造函数中初始化父类(super class)的const成员变量?

转载 作者:行者123 更新时间:2023-11-30 01:15:09 24 4
gpt4 key购买 nike

我有以下情况,我声明了 父类(super class)const 成员,现在我想在其 子类之一的构造函数中初始化它 使用列表初始值设定项

struct Shape {
public:
const Rect boundingRect; // the rect in which the shape is contained
};

struct Stain : Shape
{
public:
Stain(Rect boundingRect_) : boundingRect(boundingRect_) {}
};

我不确定这是否可行,如果我采用上面显示的直接方法,编译器会报错并显示以下消息:

member initializer 'boundingRect' does not name a non-static data member or base class

This answer解释了为什么不可能在子类 构造函数的list initiliazers 中初始化父类(super class)的成员变量。我想知道针对这种情况的最佳做法是什么?

最佳答案

您必须为 struct Shape 添加一个构造函数,并从您的子类中调用它。像这样:

struct Shape {
public:
const Rect boundingRect; // the rect in which the shape is contained

Shape( Rect rect ) : boundingRecT( rect ) {}
};

struct Stain : Shape
{
public:
Stain(Rect boundingRect_) : Shape (boundingRect_) {}
};

关于c++ - 如何在C++中的子类的构造函数中初始化父类(super class)的const成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28961952/

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