Примерно час назад или около того мне было указано на что-то, называемое списком инициализаторов, поэтому я сразу же начал его исследовать, но есть одна вещь, которую я не могу понять.
Если у меня есть что-то вроде:
class ExtClass {
public:
int ext;
int pet;
ExtClass();
};
ExtClass::ExtClass() {
this->ext = rand();
this->pet = rand();
}
class MainClass {
public:
std::vector<std::vector<ExtClass>> attribute;
MainClass(std::vector<int>>);
};
MainClass::MainClass(std::vector<int> varName) : attribute(...) { }
Дело в том, что я хочу, чтобы это произошло:
attribute[0] has {1, 2, 3, 4} of type ExtClass
attribute[1] has {5, 6} of type ExtClass
attribute[2] has {7, 8, 9} of type ExtClass
и т. Д.
То, что я хотел бы, это когда я звоню:
std::vector<int> a{4, 2, 3};
MainClass mainObject(a);
, чтобы получить пример, который я написал:
attribute[0] reserves 4 places and creates 4 objects using ExtClass constructor
attribute[1] reserves 2 places and creates 2 objects using ExtClass constructor
attribute[2] reserves 3 places and creates 3 objects using ExtClass constructor
Есть ли какой-нибудь короткий способ сделать это с помощью списка инициализаторов, или мне нужен другой подход (если так, то какой)?