0

一段时间以来,我使用 C++11 统一初始化语法{}来初始化我的所有变量。

现在我想QVector<int> 用特定的 size初始化 a ,所以我需要调用QVector(int size)构造函数(doc here)。

但是,QVector也有以下构造函数: QVector(std::initializer_list<T> args)

因此,当我像这样初始化我的变量时:QVector<int> foo{ 100 };,它不会用 100 个元素的大小初始化我的 QVector ,而是调用另一个构造函数,该构造函数构造一个 QVector值为100 的元素

如何调用QVector(int size)构造函数但仍使用统一初始化语法

4

1 回答 1

1

你正在尝试做不可能的事情。获得具有特定大小的构造函数的唯一方法是使用()括号:

QVector<int> v(100);

原因是否则会引起歧义。编译器不知道是什么

QVector<int> v{100};

正如现在所做的那样,它总是知道这是初始化列表,即插入 100 个元素中的 1 个,而不是 100 个默认元素。

请注意,这不是 Qt 特定的,在 STL 中也是如此。

于 2017-01-19T07:17:20.447 回答