如何在类中将向量初始化为一定长度?

Sta*_*tec 8 c++ vector

我有一个简单的类,其中一个成员是向量。我想初始化该向量以在类中具有特定大小,但出现错误。这是我的代码:

class MyClass
{
private:
std::vector<int> m_ray_fbos(5);
}
Run Code Online (Sandbox Code Playgroud)

这给了我警告(在 Visual Studio 2017 中)expected a typed identifier

我也尝试过std::vector<int> m_ray_fbos(5, 0);

我唯一可以开始工作的想法是,std::vector<int> m_ray_fbos = { 0, 0, 0, 0, 0 };但显然这对于​​长向量来说并不理想。

难道我做错了什么?

有没有办法在类定义中指定向量的大小?

asc*_*ler 6

()类定义中的成员语法不允许使用括号样式的初始化程序。(我不太确定为什么。)类定义中成员的初始化程序的唯一有效形式是{}大括号初始化程序列表或以 开头的初始化程序=

这会妨碍你,因为:

std::vector<int> m_ray_fbos{5};
Run Code Online (Sandbox Code Playgroud)

或者

std::vector<int> m_ray_fbos = {5};
Run Code Online (Sandbox Code Playgroud)

调用错误的vector构造函数并且不会给出您想要的结果。和

std::vector<int> m_ray_fbos = 5;
Run Code Online (Sandbox Code Playgroud)

不起作用,因为您需要的构造函数是explicit,并且=该符号进行复制初始化,因此explicit不考虑构造函数。

最简单的答案可能是

std::vector<int> m_ray_fbos = std::vector<int>(5);
Run Code Online (Sandbox Code Playgroud)

你也许也可以做类似的事情

std::vector<int> m_ray_fbos = vec_of_size(5);
Run Code Online (Sandbox Code Playgroud)

如果您有足够的其他原因来编写或使用vec_of_size类函数或自由函数。