2014-07-18 2 views
-4

Qt 생성자로 번호를 추측하여 게임을 만들려고합니다. 다른 함수에서 변수에 액세스해야합니다. 파이썬에서 "self"를 추가하여이를 수행 할 수있었습니다. 변수의 시작으로하지만 C++에서는 할 수 없습니다. 여기에 내가하려고하는 샘플이 있습니다.다른 함수에서 변수에 액세스하는 C++

void function1() 
{ 
    int i; 
} 

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

감사합니다.

+6

사용 (I 포인터 또는 클래스 상점을 권 해드립니다) 포인터, 클래스 또는 전역 변수를 사용할 수 있습니다. 매개 변수. – chris

+2

함수를 전달하고 함수에서 물건을 반환하는 방법을 배웠습니까? –

+0

'i'를 두 함수의 외부에서 선언하여 global로 만듭니다. –

답변

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"헤더 파일에 정의 할 수 있지만 그것이 글로벌 것 - 본질에. 그리고 아마 모범 사례는 아닙니다.

+1

C++에서 클래스를 사용할 수 있다고해서 * 반드시 * 할 필요는 없습니다. 그러나 나는 downvote하지 않을 것이다. –

+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

관련 문제