2012-10-20 214 views
1

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

我完全不熟悉这一点,对我的演讲几乎没有任何指导。我希望你们能够帮助我。这取决于我所做的。

//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(); 
} 
+0

问:为什么你有一流的“点”的两个不同的定义(或“你为什么要再次声明‘阶级观点’当你定义了getX的实现()和setx()“?Q:为什么”setx()“没有参数(你想设置* x的值)?Q:为什么”int x [4]“?Q:这是什么?如何处理一个“循环”? – paulsm4

+0

看起来这里的缺陷与任何东西都是逻辑的一样。getx()怎样知道要返回的4个值中的哪一个?setx()怎样知道哪个设置的价值,它将如何设置? – Shep

+1

_“几乎没有指导”_有很多优秀的书籍提供指导:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-和 - 列表 – jogojapan

回答

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

+0

你删除通过输入这个权利“删除[] Z;” ? – rasul1719435

+0

是的,没错。 '删除z'也会在这种情况下工作,但不这样做)我的错误,更正了回答 –

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 
} 

Even更好的是,您可能希望定义一个构造函数,如Point (int xvalue, int yvalue)

恕我直言...

+0

是的。但我想使用数组 – rasul1719435

+1

一个Point数组就像这样,'Point pointArray [4];'。您仍然为单个点编写Point类,然后在main中声明一个Points数组。您不要将数组放在Point类中。 – john

+0

@johnü看到我需要创建一个点类的数组,每个对象需要4组x。所以如果我创建5组点对象,每个对象应该有4组x。那是我需要实现x作为数组。如果我不创建x的数组而不是如何推动这个? – rasul1719435