一段时间以来,我使用C ++ 11统一初始化语法{}
来初始化我的所有变量。
现在我想初始化一个具有特定大小的<{1}} ,因此我需要调用QVector<int>
构造函数(doc here)。
但是,QVector(int size)
也有以下构造函数:
QVector
因此,当我初始化我的变量时:QVector(std::initializer_list<T> args)
,它不会使用 100 元素的大小来初始化我的QVector,而是调用另一个构造函数构造一个QVector 一个 元素值 100
如何调用QVector<int> foo{ 100 };
构造函数但仍使用统一初始化语法?
答案 0 :(得分:1)
你正在努力做一件不可能完成的事情。获取具有特定大小的构造函数的唯一方法是使用()
括号:
QVector<int> v(100);
原因是否则会引起歧义。编译器不知道是什么
QVector<int> v{100};
现在已经完成,它总是知道这是初始化列表,即插入1个100元素,而不是100个默认元素。
请注意,这不是Qt特定的,在STL中它的工作方式相同。