C++ 2DArray 对象;指针和数组问题

Posted

技术标签:

【中文标题】C++ 2DArray 对象;指针和数组问题【英文标题】:C++ 2DArray Objects; Pointers and Array Problems 【发布时间】:2008-12-27 09:56:03 【问题描述】:

这个问题来自我的旧问题中的一个已解决问题,来自: C++ Inserting 2D array Object into another 2D array Object

但也给我带来了新的问题。请阅读链接中的问题和解决方案以了解我的问题。上一个问题的解决方案是将我的数据成员函数变成一个指向指针的指针,以允许传递给另一个数据成员函数。但是在修复这个问题的同时,第一个数据成员函数 smallerArray.extractPiece() 现在只返回指针的地址,而不是这些指针的内容。我需要这些内容才能让我的第二个数据成员函数 largerArray.extractArray(result) 正常工作,因为我尝试运行代码并给出了窗口错误,而不是编译错误。

有谁知道如何提取smallerArray.extractPiece() 的内容而不是获取地址,是否没有,有没有其他方法可以创建二维数组对象?

【问题讨论】:

【参考方案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 那么多的元素。 xGridyGrid 太大,无法用作 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 结构。 数据和对数据的引用是两种不同的动物。在继续之前,您最好先明确他们在您的想法中的每个角色。

【讨论】:

以上是关于C++ 2DArray 对象;指针和数组问题的主要内容,如果未能解决你的问题,请参考以下文章

C++:对象和类|| this指针对象数组类作用域抽象数据类型章末总结

C++:对象和类|| this指针对象数组类作用域抽象数据类型章末总结

C++ MovieList 数组和指针

在 C++ 中使用指向数组中对象的指针会更好吗?

C++对象数组与对象指针

C++:用于超重对象的方便的基于指针数组的值迭代器