2015-11-18 21 views
2

可能是一個愚蠢的問題,我希望能夠通過默認的構造函數使用傳遞的A值,並在我的函數中使用它們,如get(),但每次我這樣做,它的值爲0,我如何設置A & B的值,然後能夠在我的其他功能中使用它們。我知道我可以將值傳遞給主函數的get函數,但我不想這樣做。獲取成員變量值設置,然後傳遞給一個函數C++

我有這樣的.H,

class example 
{ 
private: 
    int A, B; 

public: 
    example(); 
    example(int, int); 
    int get(int, int); 
}; 

然後在.cpp

example::example() 
{ 
    cout << hello; 
} 
example::example(int x, int y) 
{ 
    A = x; 
    B = y; 
} 

int example::get(int c, int d) 
{ 
    int k = c + d/A; 

    return k; 
} 

而且在main()

int c = 10; 
int d = 12; 
int x = 2; 
int y = 1; 

example obj1(x, y); 

example obj2; 
int k = obj2.get(c, d); 

cout << k; 

林想我應該看到的10 + 12/2的答案,但它的10 + 12/0,不知道我哪裏有錯誤,如果有人可以幫助謝謝!

+2

該代碼不會編譯。 '示例obj1'默認構造和示例對象,但是您尚未定義默認構造函數。另外'example(x,y)'是做什麼的? –

+0

我想將x,y的值傳遞給私有的A和B變量,然後在函數中使用它們,如果這有什麼意義 – Sup

+0

具有完美意義。查看vsoftco的答案。 –

回答

1
example(x, y); 

什麼也沒做。它創建一個立即超出範圍的臨時對象。然後

example obj1; 

不應編譯,因爲您沒有默認構造函數。如果編譯它意味着你提供了一個默認的構造函數,該構造函數被調用(並且可能不會進行任何初始化)。但在你的情況下,你想調用構造函數example::example(int, int)。正確的做法是定義

example obj1(x, y); 
+0

我已經添加了一個默認的構造函數並編輯了main,這是否會改變任何內容,現在應該如何正確編譯你所看到的,因爲我仍然有問題。歡呼聲 – Sup

+0

@Sup'example obj2;'再次構造一個非初始化對象。傳遞你想要初始化的值,例如'example obj2(10,20);'。 – vsoftco

+0

謝謝,我終於得到了我的頭! – Sup

相關問題