我正在尝试使用qt creator进行数字猜谜游戏。我需要从另一个函数访问一个变量。通过添加" self,我能够在python上做到这一点。"开始变量,但我不能在C ++上做。以下是我想要做的示例:
void function1()
{
int i;
}
void function2()
{
I need to access i here.
}
感谢您的帮助。
答案 0 :(得分:1)
我相信C ++中的等效行为将是一个成员变量。
如果您还没有,我建议您上课。因此,在头文件中定义如下:
class MyClass {
public:
void function1();
void function2();
private:
int i;
};
如果您不使用C ++课程,那么您可以定义" i"在头文件中,但这将使它成为全局 - 在本质。而且,可能不是最好的做法。
答案 1 :(得分: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
}
答案 2 :(得分:0)
无法从另一个函数访问变量,因为它们仅存在于堆栈中,并且在函数退出时会被销毁。使用全局变量。
答案 3 :(得分:0)
您可以将i声明为全局变量,并在选择后为其分配随机数。这样你仍然可以生成一个随机数并在另一个函数中使用它。
int i;
void function1()
{
int randNum;
// get random number here
i = randNum;
}
void function2()
{
// do stuff with i here
}