作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这门课:
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/
我是一名优秀的程序员,十分优秀!