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);