`
guowee
  • 浏览: 176736 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

MFC 使用 CArray 实现二维数组

阅读更多

CArray 实现二维数组

 

在MFC中,如何既利用CArray的操作便利性,又同样实现二维数组的功能呢?下面介绍一下如何实现。

 

struct MapTile
{
 CString fileName;
 int tileX;
 int tileY;
 HBITMAP bitMap;
};

 

 

struct MapTileArray
{
 CArray<MapTile, MapTile&> mapTileX;

 const MapTileArray& operator=(const MapTileArray& rhs)
 {
  if(this != &rhs)
  {
   mapTileX.RemoveAll();
   mapTileX.Append(rhs.mapTileX);
   mapTileX.FreeExtra();
  }

  return *this;
 }
};

 

  

 

实现二维数组,必须要实现MapTileArray的 = 操作符方法。

否则就会出现下面的错误。

 

error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'

 

下面为使用时候的代码:

 

typedef CArray<MapTileArray,MapTileArray&> CMapTileYArray;
static CMapTileYArray mapTilesYArray;

 

分享到:
评论

相关推荐

    MFC中动态数组CArray的使用

    ### MFC中动态数组CArray的使用详解 #### 一、CArray简介 在MFC框架中,`CArray`类是一种非常实用的数据结构,它提供了动态数组的功能,支持数组的动态扩展和收缩。与传统的C/C++数组相比,`CArray`的主要优点在于...

    CStringArray二维数组的定义和操作

    现在我们已经定义了一个二维数组`my2Array`,接下来是向其中插入数据。在循环中,我们创建一个新的`CStringArray`实例`subString`,然后添加元素"1"、"2"和"3"。之后,我们将`subString`添加到主数组`my2Array`中: ...

    MFC实现迷宫搜索——Easy参考

    在MFC环境中,我们可以通过`CArray`类来存储这个二维数组。初始化迷宫后,我们可以利用`CWnd::OnDraw`方法在窗口上绘制迷宫,展示给用户。 **步骤2:实现DFS算法** DFS的核心在于递归函数。每次递归,我们都会尝试...

    运用MFC的Collection类实现桥梁有限元程序中的数据结构.pdf

    以节点坐标为例,使用二维数组的方式存在节点数限制,而使用二级指针数组的方式则需要手动管理内存分配和释放。相比之下,使用MFC集合类的CArray模板类可以更加简洁和高效地实现节点坐标的数据结构。 在有限元分析...

    俄罗斯方块(MFC)

    在MFC中,可以使用二维数组或CArray类来存储和操作方块的状态。每个方块有固定的形状,如“T”型、“I”型、“O”型等,它们在90度旋转时需要遵循一定的规则。旋转操作可以通过改变数组中的元素位置实现。 键盘事件...

    拼图游戏MFC实现大家来下载啊

    可以使用二维数组或CArray来保存拼图块的状态。 5. **逻辑验证**:当用户尝试放置一块拼图时,需要检查目标位置是否为空,以及相邻块是否可以交换。这需要实现一些简单的逻辑判断。 6. **用户交互**:添加按钮以...

    扫雷MFC版游戏源码

    游戏的核心算法是随机生成雷区,这通常涉及到随机数生成和二维数组的处理。开发者可能使用CArray或者CAtlArray等MFC容器类来存储雷区的状态。为了实现游戏规则,比如点击、右键标记等操作,开发者需要编写事件处理...

    MFC简单扫雷,基于对话框实现

    同时,为每个非雷格子计算周围雷的数量,这通常通过二维数组或矩阵来完成。 3. **显示界面**:根据雷区信息,设置每个按钮的状态。对于有雷的格子,设置相应的图标;对于无雷的格子,显示周围的雷数。 4. **用户...

    使用de Casteljau 算法的bez曲线实现

    贝塞尔曲线(Bezier Curve)是计算机图形学中广泛使用的一种参数曲线,它具有平滑、连续的特性,常用于设计二维图形、动画路径以及3D建模等领域。de Casteljau算法是求解和绘制贝塞尔曲线的一种有效方法,尤其在计算...

    visual c++ MFC 俄罗斯方块

    游戏区域通常由一个二维数组表示,每个单元格对应屏幕上的一个像素或控件,用于绘制不同形状的方块。 MFC中的消息映射机制是处理用户输入的关键。通过定义ON_MESSAGE、ON_COMMAND等宏,我们可以为特定的消息或控件...

    MFC写的 迷宫生成算法

    1. **初始化**:创建一个二维数组来表示迷宫,所有元素初始为墙壁。选择一个起始位置,通常设为左上角,标记为通道。 2. **探索**:从起始位置开始,随机选择一个相邻的未访问过的单元格(上下左右四个方向),如果...

    MFC 拼图小游戏源代码

    图片切割则可以通过定义一个二维数组,将图片分割成若干小块。这个过程可以通过CRect类来帮助定位每个拼图块的坐标。 接下来,游戏的随机打乱可以通过一种算法实现,如Fisher-Yates洗牌算法,该算法保证了每次洗牌...

    连连看完成mfc源代码

    1. **棋盘布局**:连连看游戏通常使用二维数组来表示棋盘,存储每个位置的棋子类型。在MFC中,可以利用CArray或其他容器类来实现。 2. **匹配规则**:两个相同棋子之间必须有一条直线相连,且这条直线不能被其他...

    MFC作品-------数独

    - 数独模型:为了表示数独的当前状态,我们需要一个二维数组来存储每个单元格的值。在MFC中,可以使用动态分配的二维指针数组或CArray类来实现。 - 数独规则:数独游戏的规则是每一行、每一列以及每一个3x3的小...

    MFC通用类ppt,详细的介绍mfc通用类的使用

    其中,`CPoint`类用于描述二维坐标系统中的一个点,它有两个构造函数,一个接受两个整数参数来初始化横轴和纵轴的坐标,另一个接受Windows API定义的`POINT`结构。`CRect`类则用于表示矩形,同样有两种构造函数,...

    从DEM数据中提取等高线——MFC编写

    接着,我们需要将读取到的数据转化为二维数组或矩阵,以方便后续处理。在MFC中,可以使用CArray或CAtlArray等容器类来存储和操作这些数据。同时,我们还需要设置合适的行列索引,以便正确地映射到地理坐标。 生成...

    MFC_class.rar_mfc class_mfc类

    6. **CPoint类**:CPoint类代表二维坐标系统中的一个点,通常用于描述窗口、控件的位置。它包含两个整型成员x和y,提供了各种操作点的方法,如加减运算、距离计算等,是图形绘制和窗口布局中不可或缺的部分。 通过...

    基于MFC的2048小游戏.zip

    在MFC环境中,这些操作可以通过CArray类或动态分配的二维数组来实现。 此外,代码中的“计步”和“计分”功能可能涉及全局变量或成员变量,用以记录游戏状态。每次滑动或合并数字时,相关变量会被更新。后退两次...

    麻将连连看(基于MFC编程)

    在实现连连看的消除算法时,可以采用深度优先搜索(DFS)或广度优先搜索(BFS)策略,结合二维数组或链表来记录和检查相邻的麻将牌。这种算法需要考虑牌的旋转,以确保全方位的匹配可能。 最后,为了增加游戏的趣味...

    MFC 编写的迷宫游戏

    迷宫通常由二维数组表示,每个元素代表一个位置的状态,如墙、空地、起点、终点。BFS(广度优先搜索)或DFS(深度优先搜索)是常用的生成和解决迷宫的算法。在MFC中,可以使用`CArray`或`CList`等容器类来存储和...

Global site tag (gtag.js) - Google Analytics