Я хочу инициализировать вектор в списке инициализации конструктора. Вектор состоит из объектов с параметризованным конструктором. Что у меня есть:
Class::Class() : raster_(std::vector< std::vector<Cell> > (60, std::vector<Cell>(80))) { ...
Как я могу вызвать Cell :: Cell с двумя параметрами в приведенной выше строке? Очевидное:
raster_(std::vector< std::vector<Cell(true,true)> > (60, std::vector<Cell(true,true)>(80)))
не работает.
Вы должны попробовать:
Class::Class() : raster_(60, std::vector<Cell>(80, Cell(true, true))) { /* ... */ }
Обратите внимание, что я удалил бесполезные std::vector<std::vector<Cell> > из инициализатора.Также имейте в виду, что это может быть крайне неэффективным в зависимости от стоимости копирования Cell:
std::vector<std::vector<Cell> >
Cell
std::vector<Cell>
Cell(true, true)
:raster_(std::vector< std::vector<Cell> > (60, std::vector<Cell>(80, Cell(true, true))));
, если raster_ - это то, что принимает вектор.Если сам растр является вектором, то вот так:
:raster(60, std::vector<Cell>(80, Cell(true, true)))