如何在C++类和函数中使用for循环遍历数组并复制x_coord元素
问题修正方案
第一步:先修正icon类的成员函数定义
你现有的Get_x_value存在两个问题:
- 直接返回
x_coord[16]属于数组越界访问,长度为16的数组合法下标范围是0~15 - 没有入参,无法获取指定下标位置的元素
修改后的类代码如下:
class icon : public pixel { public: // 新增下标入参,用来获取对应位置的x_coord值 float Get_x_value(int index); private: // 保留你原有类内部的x_coord数组定义即可 float x_coord[16]; }; float icon::Get_x_value(int index){ // 可选增加边界判断避免非法访问 if(index >=0 && index <16) return x_coord[index]; // 越界时的默认返回值,可根据你的需求调整 return -1; }
第二步:修正数组复制函数的逻辑
你原有代码的循环条件i<16-1只能遍历到下标14,会漏掉最后一个元素,同时赋值逻辑需要调用传入的atIcon对象的Get_x_value方法取值,修改后的代码如下:
icon function(icon& atIcon){ int x[16]; for (int i =0; i<16; i++){ // 从atIcon中取出第i个x_coord值,赋值给新数组x的第i位 x[i] = atIcon.Get_x_value(i); // 输出验证直接打印x[i]即可 cout << x[i] << endl; } return atIcon; }
补充说明
如果你不想修改Get_x_value的原有定义,也可以在类内新增一个直接返回整个数组指针的成员函数,上述方案是侵入性最低、安全性最高的实现方式。
内容的提问来源于stack exchange,提问作者Dean
相关产品推荐
相关产品推荐

