2012-10-20 215 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