【问题标题】:C++ 2DArray Objects; Pointers and Array ProblemsC++ 2DArray 对象;指针和数组问题
【发布时间】:2008-12-27 09:56:03
【问题描述】:
这个问题来自我的旧问题中的一个已解决问题,来自:
C++ Inserting 2D array Object into another 2D array Object
但也给我带来了新的问题。请阅读链接中的问题和解决方案以了解我的问题。上一个问题的解决方案是将我的数据成员函数变成一个指向指针的指针,以允许传递给另一个数据成员函数。但是在修复这个问题的同时,第一个数据成员函数 smallerArray.extractPiece() 现在只返回指针的地址,而不是这些指针的内容。我需要这些内容才能让我的第二个数据成员函数 largerArray.extractArray(result) 正常工作,因为我尝试运行代码并给出了窗口错误,而不是编译错误。
有谁知道如何提取smallerArray.extractPiece() 的内容而不是获取地址,是否没有,有没有其他方法可以创建二维数组对象?
【问题讨论】:
标签:
c++
pointers
object
multidimensional-array
【解决方案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];
}
}
}
【解决方案2】:
现在,您的问题似乎有点不明确。您希望从较小的数组中获得多大的“片段”,您希望在较大的数组中的哪个位置插入它?
【解决方案3】:
如果你创建一个二维数组对象或类(或结构),事情可能会更容易
class BaxMatrix {
public:
int m_Data[4][4];
}
只需做一些工作,您就可以根据需要构建动态结构或使用 STL 结构。
数据和对数据的引用是两种不同的动物。在继续之前,您最好先明确他们在您的想法中的每个角色。