我想初始化对象数组中向量的大小。初始化对象数组中的向量大小
每个矢量具有相同的大小,以便...
LIB文件:
#include <vector>
Class NameClass
{
public:
explicit NameClass(unsigned size)
{
vectorName.resize(size);
}
std::vector <type> vectorName;
};
主文件:
#include "lib.hpp"
int main(void)
{
NameClass object(size); #1
NameClass object[ number_objects ](size); #2
NameClass object[ number_objects ] = {NameClass(size), NameClass(size), ... }; #3
return 0;
}
#1的作品,而不是一个数组, #2没有,编译器说:“从int到非标量类型的转换'NameClass'请求” #3的作品,但是...它只是荒谬的初始化每个对象。而且我不能只在类中放入一个静态的大小,因为这个值会改变。
所以...我的研究说,我需要使用std :: generate。问题是......什么是最好的方法?
对不起,如果很容易的问题如何使用std :: generate我是初学者,并找麻烦找到最佳的解决方案。
一些人认为复杂的解决方案,但是,我一直用我的解决方案
#include "lib.hpp"
int main(void)
{
unsigned number_objects = something;
unsigned size = other_thing;
NameClass object[ number_objects ];
for(unsigned i = 0; i < number_objects; i++)
object[i].vectorName.resize(size);
return 0;
}
我使用变薄,因为实在是容易理解,并工作。但我打开其他容易理解和功能解决方案。
'NameClass object [number_objects] = {NameClass(size)}'should work我认为 – Telokis
@Ninetainedo不,这[只会初始化第一个](http://coliru.stacked-crooked.com/a/ 93420d6f114844d9)(其余部分默认初始化) – Borgleader
@Borgleader:从技术上讲,其余的都是初始化的。对于'vector',结果是一样的。 –