游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1368|回复: 2

如何重载一个二维数组?

[复制链接]

3

主题

18

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2007-4-3 21:31:00 | 显示全部楼层 |阅读模式
一个2X2矩阵类,里面的成员是以2维数组方式存储
class mrMatrix22  
{
protected:
        mrReal32        m_aafElements[2][2];
public:
        mrMatrix22 Concatenate(mrMatrix22 &rkMatrix);
        mrReal32 &operator[](const mrInt iElement);           //如何实现?
};

mrMatrix22 mrMatrix22::Concatenate(mrMatrix22 &rkMatrix)
{
        mrInt8 iI;
        mrInt8 iJ;
        mrMatrix22 kMatrix;

        for(iJ=0; iJ<2; iJ++)
        {
                for(iI=0; iI<2; iI++)
                {
                        kMatrix[iJ*2+iI] = m_aafElements[0][iI]*rkMatrix[iJ*2+0]+
                                m_aafElements[1][iI]*rkMatrix[iJ*2+1];
                }
        }

        return kMatrix;
}

mrReal32 &mrMatrix22:perator[](const mrInt iElement)
{
           //这里如何实现?
}

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-4-3 21:57:00 | 显示全部楼层

Re:如何重载一个二维数组?

template   <typename   _Ty>   
  class   Array   
  {   
  public:   
      _Ty&   operator[](size_t   index);   
  };   
   
  然后你有   
  Array<Array<int>   >   arr2d;   
  就可以用   arr2d[2][5]   访问了

6

主题

8

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-4-8 00:17:00 | 显示全部楼层

Re:如何重载一个二维数组?

_Ty&   operator[](size_t   index);   

还是没有实现?
莫不是 return &arr2d[index][0];
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-4-12 15:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表