爱问知识人 爱问教育 医院库

想不通啊想不通 麻烦看看

首页

想不通啊想不通 麻烦看看

如图 右边的窗口是类的构造  中间的是main函数 其中 构造了225个类对象并进行赋值,对于x参数 和y参数 分别使用两个for循环赋值 x的参数赋值正确 参见左边的结果 但是对于y参数 为什么赋值前后j始终是1的情况下  赋值给cro[0].y(不仅cro[0] cro[1] cro[2]都是)赋不进去呢?(50是默认构造定义的 参见右边类的代码)

我预期的结果是
cro0.x=1  cro1.y=1
cro1.x=1  cro1.y=2
cro2.x=1  cro2.y=3
....
cro14.x=1  cro14.y=15
cro15.x=2  cro15.y=1
cro16.x=2  cro16.y=2
....
cro223.x=15 cro223.y=14
cro224.x=15 cro224.y=15
这样就构成了一个15×15的格子 这是我的目的

如图 右边的窗口是类……
提交回答
好评回答
  • 2012-10-20 19:55:46
    二楼回答的部分正确,但是违背了面向对象的封装理念
    你的Cross类将i和j全部定义成了public,因此二楼给你提供了上述初始化的方法,主要原因是你的定义违背了封装原则
    你为Cross提供了构造函数,Cross(int x=0,iny y=0)
    因此你的Cross cro[255]代码是可以自动初始化的,系统执行到这里,已经为你见了255个Cross类实例,
    因此为了充分利用oop的封装特性,我建议你增加方法:
    Cross::setXY(int x=0;int y=0)
    在你的循环中调用该方法:setXY(i,j)
    问题就解决了
    我建议你将x和y设置为private

    好***

    2012-10-20 19:55:46

其他答案

    2012-10-21 13:50:59
  • 楼主,上面两个都是脑子有坑的人,明显你错的很离谱。第一,你的目的是想输出15*15共225个空格的坐标,应该输出的是225个,你三个循环式是225*15*15个!int i=0,j=0,n,message;
    Cross cro[225];
    for(n=0;n<=224;n++)
    {
      i++;j++;
      cro[n].setXY(i,j)
    }
    二楼的观点是对的!一楼就是二货~!

    l***

    2012-10-21 13:50:59

  • 2012-10-20 09:35:26
  • 问题出在:cro[n]=(i,j);
    (i,j)是逗号表达式,它的值是j,所以cro[n]=(i,j);相当于cro[n]=j;
    cro构造函数不能显式调用,即便可以调用,相当于调用格式为
    cross(j,0)//因为只有一个参数
    所以只是对x赋值为j,y根据函数定义,一直为50
    赋值部分改为
    cor[n].x=i;
    cro[n].y=j;
    不是更清晰吗?

    V***

    2012-10-20 09:35:26

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 175-194
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):