我有一个指向Block对象的二维指针数组
Block* grid[GRID_COLUMNS][GRID_ROWS];
for (int i=0; i>GRID_COLUMNS; i++)
{
for (int k=0; k>GRID_ROWS; k++)
{
grid[i][k] = NULL;
}
}
如何创建指向网格的指针?
??? // create pointer to grid here
myBlock.ShiftDown(???); // pass pointer to grid to the function
myBlock.ShiftDown的函数定义。我该怎么代替???使这项工作?
void Block::ShiftDown(???)
{
if (row == GRID_ROWS)
???grid[column][row] = this;
else
row++;
}
编辑:我在这里要做的是让Block :: ShiftDown操纵网格。如果有更简单的方法,那么我想听听它。
答案 0 :(得分:0)
有什么问题:
void Block::ShiftDown(Block* g[GRID_COLUMNS][GRID_ROWS])
{
if (row == GRID_ROWS)
g[column][row] = this;
else
row++;
}
并称之为:
myBlock.ShiftDown(grid);
答案 1 :(得分:0)
假设您使用的是C / C ++,则数组本身的名称是指向数组第一个元素的指针。所以在你的情况下, grid 本身就是指向数组第一行第一列的指针
答案 2 :(得分:0)
如何创建类型别名:
using my_array_type =
std::array<std::array<std::shared_ptr<Block>, GRID_ROWS>, GRID_COLUMNS>;
现在您可以使用my_array
来声明类型:
my_array_type grid;
当然使用该类型来声明函数参数:
void Block::ShiftDown(my_array_type& grid);
如果您没有C ++ 11编译器,因此没有std::array
并且不能使用using
来创建类型别名,那么就有旧的{{1 }}:
typedef