循环数组

时间:2012-10-20 05:06:23

标签: c++ arrays c++11

我想知道,如何循环遍历int数组以获取其值并设置其值。我知道如何使用for循环立即获取,但我不确定它是如何工作的,当我在用户创建的对象和使用get set方法的esp中使用时。

我对此完全陌生,而且我的讲座很少得到指导。我希望你们能协助我。这就是我所做的。

// point.h

class point {
private:
    int x[4];

public:
    int getx();
    void setx();
};  

// point.cpp

class point {
   point::getx(){
      // ??????
   }

   point::setx(){
      // ???????
   }

// main.cpp中

 int main(){
     point objPoint;
     objPoint.setx(/* ???? */);
     ???? = objPoint.getx();
 }

2 个答案:

答案 0 :(得分:2)

首先,您的getx方法应该返回int*,而不只是int,而您的setx应该会收到const int*作为参数。其次,在你的point.cpp文件中,你不应该重新声明class point

int* point::getx() { //version with copying
    int* ans = new int[4];
    for (int i = 0; i < 4; i++) {
        ans[i] = x[i];
    }
    return ans;
}

void point::setx(const int* y) {
    for (int i = 0; i < 4; i++) {
        x[i] = y[i];
    }
}

然后你可以像这样使用它们

int y[4] = {1, 2, 3, 4};
int* z;
objPoint.setx(y);
z = objPoint.getx();

完成后不要忘记delete[] z

答案 1 :(得分:2)

如果我正确理解你,你可能想要更多这样的东西:

point.h:

class Point{
private:
  int x, y;
public:
  int getx();
  int gety();
  void setx(int value);
  void sety(int value);
};  

point.cpp

int Point::getx() { return x; }
int Point::gety() { return y; }
void Point::setx(int value) { x = value; }
void Point::sety(int value) { x = value; }

的main.cpp

int main(int argc, char *argv[])
{
  Point objPoint;
  objPoint.setx(1);
  int x = objPoint.getx();
  cout << "x=" << x << endl;
  return 0
}

更好的是,您可能希望定义像Point (int xvalue, int yvalue)这样的构造函数。

恕我直言......