std::vector< std::vector<Sprite*> > matrix;
Это пустой std :: vector из std :: vector, и, как уже отмечали другие, это больше не матрица элементов данных.
Так как он пуст, невозможно сделать matrix[0]
- получить первую строку, matrix[1]
- получить вторую строку ... Однако вы можете сначала указать размер матрицы в конструкторе - например, Это даст вам rows*columns
матрицу
vectorMatrix::vectorMatrix(int columns, int rows)
: matrix(rows, std::vector<Sprite*>(columns))
{
}
И затем вы можете установить x-й и y-й элемент в соответствующие Sprite*
, и, конечно, x
и y
должны быть меньше, чем rows
и columns
matrix[x][y] = sprite;
И не объявляйте matrix
снова внутри addCellAt
. Вы можете использовать элементы данных непосредственно в любом месте внутри класса.