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

C++ 如何在类中将向量初始化为特定长度?,c++,vector,C++,Vector,我有一个简单的类,其中一个成员是向量。我想初始化该向量,使其在类中具有特定的大小,但出现了一个错误。这是我的密码: class MyClass { private: std::vector<int> m_ray_fbos(5); } class-MyClass { 私人: std::向量m_射线fbos(5); } 这给了我一个警告(在Visual Studio 2017中)需要键入标识符 我还尝试了std::vector m_ray_fbos(5,0) 我唯一能想到的是std:

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

class MyClass
{
private:
std::vector<int> m_ray_fbos(5);
}
class-MyClass
{
私人:
std::向量m_射线fbos(5);
}
这给了我一个警告(在Visual Studio 2017中)
需要键入标识符

我还尝试了
std::vector m_ray_fbos(5,0)

我唯一能想到的是
std::vector m_ray_fbos={0,0,0,0}但显然,这对于长向量并不理想

我做错什么了吗


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

您可以通过成员初始化列表初始化向量:

#include <iostream>
#include <vector>

class MyClass
{
    std::vector<int> m_ray_fbos;
public:

    MyClass() : m_ray_fbos(5) {}
    size_t GetSize() const
    {
        return m_ray_fbos.size();
    }
};

int main()
{
    MyClass c;
    std::cout << c.GetSize() << std::endl;

    return 0;
}
#包括
#包括
类MyClass
{
标准:向量m_射线_fbos;
公众:
MyClass():m_ray_fbos(5){}
大小\u t GetSize()常量
{
返回m_ray_fbos.size();
}
};
int main()
{
MyClass c;
std::cout类定义中的成员的语法不允许使用
()
括号样式的初始值设定项。(我不确定原因。)类定义中成员的初始值设定项的唯一有效形式是
{}
括号初始值设定项列表或以
=
开头的初始值设定项

这就妨碍了你,因为:

std::vector<int> m_ray_fbos{5};
将不起作用,因为您需要的构造函数是
显式的
,并且
=
符号进行复制初始化,因此不考虑
显式的
构造函数

最简单的答案可能是

std::vector<int> m_ray_fbos = std::vector<int>(5);
std::vector m_ray_fbos=std::vector(5);
你也可以做一些类似的事情

std::vector<int> m_ray_fbos = vec_of_size(5);
std::vector m_ray_fbos=vec_大小(5);

如果您有足够的其他理由编写或使用大小为的
vec\u
类函数或自由函数。

我认为在定义向量时您不应该和/或不能初始化向量。而且,在头文件中设置向量大小是一种不好的做法。为什么不在类构造函数中这样做,如下所示:m_ray\u fbos.reserve(5)?您可以查看此问题以了解其不起作用的原因:
std::vector<int> m_ray_fbos = std::vector<int>(5);
std::vector<int> m_ray_fbos = vec_of_size(5);