gpt4 book ai didi

c++ - 如何在 C++ 中创建只读取一次的初始化函数

转载 作者:行者123 更新时间:2023-11-28 00:51:22 24 4
gpt4 key购买 nike

我有这门课:

class A : public B

我需要在 A 中添加一些 protected 字段:_field,我不能触摸/更改 B。现在,B 和 A 中的所有函数都是虚拟的除了构造函数。显然,_field 不是 B 类的一部分。

我需要初始化_field。如果唯一的构造函数是 B,我该怎么做?另外,像这样:

unsigned long _field = 0;

给我一​​个错误编译。

我通过以下方式解决这个问题:

class A : public B
{
protected:
unsigned long _field;
public:
void fooFunction(){
....do other stuff....
static bool isInitField = false;
if (!isInitField){
_field = 0;
isInitField = true;
}
...rest of the function...
}

有没有更好的方法来做到这一点而不使用静态?

谢谢,或者

最佳答案

在初始化列表中使用 A 构造函数并调用 B 构造函数,这样就可以初始化类 A 的所有字段:

A(unsigned long i, other_paramaters oth) : B(oth),_field(i) {

}

关于c++ - 如何在 C++ 中创建只读取一次的初始化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13902088/

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