2016-03-09 40 views
0

我有三個類。在a.cpp類我有一個int i和功能設置,並獲得INT iC++ - 從不同的類中獲取變量設置在不同的類中

int i = 0 
void setI(int number) 
{ 
    i = number; 
} 
int getI() 
{ 
    return i; 
} 

b類我設置i到一定值。

A aObject 
aObject.setI(5); 

現在,如果我打印的i值到屏幕上,我得到的價值,我將其設置爲。

c類不過,我想用同樣的方法,我在b類用來打印該值,

A aObject 
cout << aObject.getI(); 

,但是當我這樣做,我得到的i默認值(即0 )。 如何獲得我之前更改過的值?

+0

正如僅供參考,用反引號格式化大塊代碼不是一個好主意。要格式化整個塊,請將其中的行縮進四個字符,或突出顯示該塊,然後單擊格式工具欄中的花括號按鈕。 –

+0

看起來像一個範圍問題。此外,我們還有很多未知因素,因爲我們不知道你在做什麼。最好讓你發佈代碼供我們查看。 你爲什麼要讓Class B設置A實例的值,而Class C是否讀取A實例? –

+0

謝謝,我真的不知道如何正確格式化。 –

回答

0

你有不同的對象,它們的字段是不同的實體存儲在不同的地方。你設置一個閱讀另一個。您可能想要在全局範圍內定義一個單獨的對象(或者從兩個類都可以看到的對象)。或者,如果您仍然希望爲所有對象(類字段)使用不同的對象但字段相同,請參閱static

+0

這種方法設法修復程序,我明白錯誤,這正是我想要的。對不起,這在問題中並不清楚。 –

+0

@PotatoIng_但靜態意味着該字段對您班級的所有實例都具有相同的值。如果你只是想在另一個地方訪問一個類的實例的任意字段,就像你創建了那個實例一樣,你必須傳遞它。所以建議的解決方案可能適用於您,但可能做得太多。意思是說,使用全局變量來使字段「static」幾乎相同。 – cwschmidt

+0

@cwschmidt這是一個非常簡單的程序,我不認爲它會影響很多。但爲了將來的參考,你會建議什麼? –

相關問題