2014-07-18 232 views
-4

我正在嘗試使用qt創建器進行猜數字遊戲。我需要從另一個函數訪問一個變量。我能夠通過添加「自我」在python上做到這一點。到變化的開始,但我不能在C++上做到這一點。以下是我想要做的示例:C++從其他函數訪問變量

void function1() 
{ 
    int i; 
} 

void function2() 
{ 
    I need to access i here. 
} 

感謝您的幫助。

+6

使用。參數。 – chris

+2

您是否學過如何將函數傳遞給函數並將函數返回? –

+0

通過在兩個函數之外聲明它來使'i'全局。 –

回答

1

你可以使用指針,類或全局變量(我建議指針或一類壽)

void f1(int *iPtr) 
{ 
    cout << "value= " <<*iPtr << endl; 
} 

void f2(int *iPtr) 
{ 
    *iPtr = *iPtr + 5; // access (modify) variable here 
    cout << "after addition = " << *iPtr << endl; 
} 

int main() 
{ 
    int i = 5; 
    int *iPtr; 
    iPtr = &i; // point pointer to location of i 
    f1(iPtr); 
    f2(iPtr); 
// after f1() value of i == 5, after f2() value of i == 10 
} 
1

我相信C++中的等價行爲應該是一個成員變量。

如果你還沒有,我會建議使用一個類。所以,在你的頭文件中定義它是這樣的:如果你不使用C++類

class MyClass { 
    public: 
    void function1(); 
    void function2(); 

    private: 
    int i; 
}; 

,那麼你可以定義在頭文件中的「i」,但是,這將使全球 - 在essense。而且,可能不是最佳做法。

+1

僅僅因爲你*可以*在C++中使用類並不意味着你*必須*。但我不會倒下。 –

+0

但我需要讓我重新設置每次按鈕(function1)點擊以獲得新的隨機數。這就是爲什麼我需要在function1中聲明它。還要感謝我會檢查傳遞和返回變量。 – user3755771

0

從另一個函數中訪問變量是不可能的,因爲它們只存在於堆棧上,並且當函數退出時它們被銷燬。使用全局變量。

0

您可以將i聲明爲全局變量,並且只要您選擇它就將其指定給隨機數。這樣你仍然可以生成一個隨機數並在另一個函數中使用它。

int i; 
void function1() 
{ 
    int randNum; 
    // get random number here 
    i = randNum; 
} 

void function2() 
{ 
    // do stuff with i here 
} 
+0

謝謝。這是工作 – user3755771