这个问题来自我的旧问题中解决的问题,来自: C++ Inserting 2D array Object into another 2D array Object
但也为我创造了一个新问题。请阅读链接中的问题和解决方案以了解我的问题。上一个问题的解决方案是将我的数据成员函数转换为指向指针的指针,以允许传递到另一个数据成员函数。但是在修复时,smallerArray.extractPiece()
的第一个数据成员函数现在只返回指针指针的地址而不是那些指针的内容。我需要内容才能使我的第二个数据成员函数largerArray.extractArray(result)
正常工作,因为我尝试运行代码并给出了窗口错误,而不是编译错误。
有没有人知道如何提取smallerArray.extractPiece()
的内容而不是获取地址,并且没有,是否有人有任何其他方法来创建2D数组对象?
答案 0 :(得分:1)
void Grid::extractArray( int** arr )
{
for(int i = 0; i < xGrid ; ++i) {
for (int j = 0; j < yGrid ; ++j) {
squares[i][j] = arr[i][j];
}
}
}
较小的数组int**arr
没有Grid
那么多的元素。
xGrid
和yGrid
太大,无法用作arr[][]
的索引。
您必须将完整的较小数组对象传递到extractArray()
函数,并使用此对象的大小作为复制函数。
void Grid::extractArray( const Piece & piece)
{
for(int i = 0; i < piece.xGrid ; ++i) {
for (int j = 0; j < piece.yGrid ; ++j) {
squares[i][j] = arr[i][j];
}
}
}
答案 1 :(得分:0)
现在,您的问题似乎有点不明确。您希望从较小的阵列中获得多大的“块”,以及在较大的阵列中您希望插入它的位置?
答案 2 :(得分:0)
如果您创建2D数组对象或类(或结构)
,它可能会使事情变得更容易class BaxMatrix {
public:
int m_Data[4][4];
}
通过一些工作,您可以构建动态结构或根据需要使用STL结构。 数据和对数据的引用是两种不同的动物。在继续前进之前,最好先澄清他们在思考中的每一个角色。