В C++ у меня есть класс MyClass
, который во время построения ссылается на int
, чтобы создать внутреннюю ссылку на него.Ссылки на элементы в векторах во время строительства
У меня тогда есть класс BigClass
, содержащий как std::vector<int> vecInt_
, так и std::vector<MyClass> vecMyClass_
. Конструктор BigClass
принимает в качестве аргумента размер векторов vecInt_
и vecMyClass_
. В конструкторе BigClass
я хотел бы, чтобы каждый элемент vecMyClass_
использовал в своем конструкторе соответствующий элемент vecInt_
.
Как я могу это написать? Если бы я мог вызвать конструкторы vecMyClass
из тела конструктора BigClass, который будет выглядеть так:
BigClass(int nbElem) :
vecInt_(nbElem),
vecMyClass_(nbElem)
{
for (int i = 0; i < nbElem; ++i)
{
vecMyClass_[i](vecMyInt_[i]);
}
}
Но, конечно, скобка здесь будет означать operator()
, а не конструктор. Я не могу написать что-то вроде:
vecMyClass_[i] = MyClass(vecMyInt_[i]);
Поскольку MyClass содержит ссылку, а не указатель, и, таким образом, эталонное значение не может быть изменено.
Do 'vecInt_' и' vecMyClass_' должны быть 'const'? –
Элементы вектора не будут добавлены/удалены, однако значения, сохраненные в векторе, будут изменены. – vkubicki