想不通啊想不通 麻烦看看
如图 右边的窗口是类的构造 中间的是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的格子 这是我的目的
二楼回答的部分正确,但是违背了面向对象的封装理念 你的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
楼主,上面两个都是脑子有坑的人,明显你错的很离谱。第一,你的目的是想输出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) } 二楼的观点是对的!一楼就是二货~!
问题出在: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; 不是更清晰吗?
答:typedef struct person{ int mark1,mark2; char name; }information; 问题主要出在这里,上面的nam...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>