初始化程序列表不正常
Initialiser list not in order
因此,我创建了一个名为Dictionary
的类,它继承自基IEnumerable
,并包含一个类型为List
的成员。List
有一个const unsigned int&
成员,该成员存储并公开其项目计数。
这是Dictionary
的构造函数。
Dictionary() : _list(), IEnumerable(_list.Count)
{ }
我将"已初始化"列表中的const unsigned int&
传递给IEnumerable
。问题是,IEnumerable
的初始化程序在_list
(类型为List
的成员)之前被调用,所以我传入了一个无效的引用。
是否有任何方法可以强制成员_list
在基类IEnumerable
之前初始化?
基类总是在直接成员之前初始化。(事实上,mem初始值设定项列表中的基和成员的顺序没有任何作用——顺序总是由类定义决定的。)
一种解决方法是将您的成员移动到另一个基类。
struct HasList {
List _list;
// Might want custom constructors here.
};
class Dictionary
: private HasList,
public IEnumerable
{
// ...
(这是private
继承为数不多的有用用途之一。)
- 基类构造函数在继承类的构造函数之前调用
- 成员按照声明的顺序进行初始化(通常在头文件中),初始化列表的顺序无关紧要
相关文章:
- C++中的memset函数工作不正常
- 通用线程池类工作不正常
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 名为DLL的C++windows服务程序工作不正常
- C++-循环中的If语句工作不正常
- While循环和if/else语句工作不正常
- C++中的不可变列表
- 如何在不复制列表的情况下将列表传递给线程,同时销毁原始列表
- Qthread ::更改系统时间时睡眠不正常
- 在成员初始化列表中,我可以创建对列表中不在列表中的成员变量的引用
- 阵列中的元素不正常地变化
- C++:最大数组值函数工作不正常
- 如何使QComboBox的文本加粗,而不是列表项?
- 工会工作不正常
- 为什么这个循环运行不可见的代码?工作不正常
- C++STL映射键和值工作不正常
- C++地图行为不正常
- 列表迭代器功能不正常
- 初始化程序列表不正常