2012-12-07 3 views
-5

내가 정의 공용 함수 tempfuncClass1와 프로젝트를 값과 다른 클래스에서 액세스 할 수 없습니다입니다 tempvar=500을 설정합니다.공공 변수는

int tempvar2=Class1().tempfunc(0); 

: 나도 같은 Class1tempvar를 사용하려고하면, 그 값은 내가 다음 코드를 사용 Class1tempfunc를 호출 한 후 호출 할 또 다른 Class2에, 둘째 500

아니다 나는 tempvar2의 가치가 500이지만 약간의 더미 값을 기대합니다.

tempfunc이 실행 된 후에 tempvar의 값을 Class2에서 Class1으로 가져 오려면 어떻게해야합니까?

+4

왜 POST 코드가 없습니까? –

+3

코드를 보여 주시면 알려 드리겠습니다. : D –

+0

변수를 사용하기 전에 변수를 초기화해야합니다. 생성자에서 변수를 초기화하는지 확인하십시오 (0 또는 null도 포함). –

답변

4

나는 내 심령 능력을 사용하여 당신이 뭘 잘못하고 있는지 알아 내려고 노력할 것입니다. 나는 (두 번째 질문에서 말한 것과 같은) 다음과 같은 것을하고 있다고 생각한다.

class Class1 
{ 
public: 
    int temp; 
    void tempfunc(int x) { temp = x; } 
    void someOtherFunction() { std::cout << temp << std::endl; } 
}; 

int main() 
{ 
    Class1().tempfunc(5); 
    Class1().someOtherFunction(); // Prints some garbage value, not 5 
} 

이제는 이것이 작동하지 않는 이유를 설명하겠다. 클래스는 해당 클래스 유형의 오브젝트가 어떤 모습인지에 대한 설명입니다. 클래스 자체에는 int 객체가 없지만 객체는 Class1입니다.

이제 위의 코드에서 Class1()Class1 유형의 개체를 만듭니다. 이름이 지정되지 않고 임시이므로 줄 끝에서 삭제됩니다. 해당 임시 객체에 tempfunc(5)을 호출하고 temp 멤버 변수를 5로 설정합니다. 그러나 그 다음에는 파기됩니다. 다음 줄에서 우리는 다른 새로운 Class1 개체를 만들고 그 위에 someOtherFunction 전화 -하지만이 객체가 temp 회원이 5로 설정되어 없었습니다 , 그냥 어떤 임의의 초기화되지 않은 변수를 (이 두 번째 질문에 대한 대답)가 있습니다. 당신이 두 기능 유형 Class1의 같은 객체를 사용하려면

, 당신은 수행해야합니다 :

Class1 obj; 
obj.tempfunc(5); 
obj.someOtherFunction(); 

이 유형 Class1와 이름이 obj의 객체를 생성합니다. 그런 다음 그 명명 된 객체에 함수를 호출 할 수 있습니다. 편집 한 후


: 당신은 int를 반환으로 tempfunc를 선언하지만, 그것에서 아무것도 반환하지 않습니다. 필요한 항목 :

int tempfunc(int temparg) 
{ 
    if (temparg>0) 
    { 
     tempvar=temparg; 
    } 
    return tempvar; 
} 
+0

반환 값'tempvar'를 사용하면 작동하지 않습니다. 두 번째로'Class1'의 또 다른 함수를 통해'tempfunc (500)'을 호출합니다. – omnetuser99

+0

@ omnetuser99 질문이 닫힙니다. 다시 시작. 이번에 또 다른 질문을 게시하고 올바르게하십시오. 우리에게 수업을 보여주고, 수업을 사용하는 코드와 얻는 결과를 보여주십시오. 칭찬할만한 인내를 위해서 –

+0

+1 – Martin