转自 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;