gpt4 book ai didi

c++ - 在 C++ 中将对象存储在二维 Sprite 矩阵中

转载 作者:行者123 更新时间:2023-11-27 23:46:36 25 4
gpt4 key购买 nike

我想在二维 vector 中存储一个图 block 列表(指向“Sprite”类对象的指针)。

目前我正在将我的 tilemap 的所有 Sprite 存储在一个 vector 中。

std::vector<Sprite*> _tiles;

现在我需要获取所有相邻的图 block ,我认为将我的 Sprite 存储在二维矩阵( vector 中的 vector )中以进行这些计算会更容易。

但我不知道该怎么做。

标题:

private:
std::vector<std::vector<Sprite*>> matrix;

C++ 文件:

vectorMatrix::vectorMatrix(int columns, int rows) { }

vectorMatrix::~vectorMatrix() { }


void vectorMatrix::addCellAt(int x, int y, Sprite* sprite) {
std::vector< std::vector<Sprite*> > matrix;
matrix[x][y].push_back(sprite);
}

但如果我使用两个索引运算符,我会收到一条错误消息。

最佳答案

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*,当然xy要小于

matrix[x][y] = sprite;

并且不要在addCellAt中再次声明matrix,您可以在类中的任何地方直接使用数据成员。

关于c++ - 在 C++ 中将对象存储在二维 Sprite 矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50079068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com