我想初始化對象數組中向量的大小。初始化對象數組中的向量大小
每個矢量具有相同的大小,以便...
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',結果是一樣的。 –