#c #vector #constructor
#c #вектор #конструктор
Вопрос:
Я пытаюсь создать двумерный std::vector
, который будет содержать объекты этого унаследованного мной класса. Проблема, с которой я сталкиваюсь, заключается в том, что у этого класса есть только один конструктор, и который использует один параметр ( std::string
если быть точным).
#define HEIGHT 4
#define WIDTH 4
#include <vector>
using std::vector;
static vector<vector<Reaper> > reaper(HEIGHT, vector<Reaper> (WIDTH));
Это должно создать матрицу объектов Reaper 4×4 в моем векторе. По крайней мере, я знаю, что это сработало бы, если бы у меня был конструктор без доступных параметров.
Но именно так я бы создал экземпляр Reaper
объекта:
Reaper r0("R0");
Reaper* r1 = new Reaper("R1");
Теперь я не могу понять, как включить этот конструктор в мою векторную конструкцию?
Комментарии:
1. Не используйте
#define
для констант. Не используйтеnew
для создания экземпляров объектов. Кроме того, для матричных двумерных векторов вы почти всегда хотите использовать одномерный вектор длиныwidth * height
и вычислять индекс на основе ваших двух координат (разумеется, все они заключены в класс).
Ответ №1:
Вы можете использовать vector(size_t n, const Tamp; t)
конструктор для инициализации внутреннего вектора reaper
s некоторым начальным постоянным значением, например
static vector<vector<Reaper> > reaper(HEIGHT, vector<Reaper> (WIDTH, Reaper("value")));
Кажется, вы использовали это один раз для внешнего вектора — вы можете использовать это и для внутреннего вектора.
В качестве альтернативы вы можете создать 2d-вектор из указателей на reaper
s.