2014-06-09 2 views
-10

클래스 및 개체에 대한 질문이 있습니다. 우선이 프로그램이 내 프로그램입니다.C++ 다른 클래스 멤버에 액세스

#include <iostream> 
#include <conio.h> 
using namespace std; 

class Class1{ 
    private: 
     int x; 
    public: 
     Class1(); 
     void Display(); 

}; 
class Class2{ 
    private: 
     double z; 
    public: 
     Class2(); 
     void Display(); 
     Class2 Add(Class1); 
}; 

Class1::Class1(){ x = 1; } 
Class2::Class2(){ z = 5; } 
void Class1::Display(){ cout<<x<<"\n"; } 
void Class2::Display(){ cout<<z<<"\n"; } 
Class2 Class2::Add(Class1 t){ 
    Class2 y; 
    y.z = t.x + z; 
    return y; 
} 

int main(){ 

    Class1 ob1; // ob1 = 1 // 
    Class2 ob2,ob_x; // ob2 = 5 | ob_x = 5 // 
    ob_x = ob2.Add(ob1); // Add ob + ob1 and Assigned them to ob_x // 
    ob_x.Display(); 

    cout<<endl; 
    getche(); 
    return 0; 
} 

어디서 오류인지 알 것 같습니까? 다른 클래스 멤버에 액세스하려면 어떻게합니까? 나는 우리가 대학에서 그것을 배웠다는 것을 의미하지 않았다. 두 클래스 모두에 액세스 할 수있는 또 다른 전역 함수로이를 수행 할 수 있습니까? 제발 도와 드릴 수있는 작은 팁, 그리고 감사의

+5

적 게터/세터 메소드 들어 Class1에 추가? – deviantfan

+1

다음은 시작하기위한 입문서입니다. http://www.cplusplus.com/doc/tutorial/classes/ –

+0

[this] (http://stackoverflow.com/questions/14764412/how-to-access-member-function)를 확인하십시오. - 하나 - 클래스 - 내부 - 다른 클래스? rq = 1), 그리고이 주제에 대해 다른 만 질문을 먼저 새로운 하나를 요구하기 전에! –

답변

2

단순히 getter 메소드 int get_x()

#include <iostream> 
#include <conio.h> 
using namespace std; 

class Class1{ 
    private: 
     int x; 
    public: 
     Class1(); 
     void Display(); 
    int get_x(); 

}; 

int Class1::get_x() 
{ 
return x; 
} 

class Class2{ 
    private: 
     double z; 
    public: 
     Class2(); 
     void Display(); 
     Class2 Add(Class1); 
}; 

Class1::Class1(){ x = 1; } 
Class2::Class2(){ z = 5; } 
void Class1::Display(){ cout<<x<<"\n"; } 
void Class2::Display(){ cout<<z<<"\n"; } 
Class2 Class2::Add(Class1 t){ 
    Class2 y; 
    y.z = t.get_x() + z; 
    return y; 
} 

int main(){ 

    Class1 ob1; // ob1 = 1 // 
    Class2 ob2,ob_x; // ob2 = 5 | ob_x = 5 // 
    ob_x = ob2.Add(ob1); // Add ob + ob1 and Assigned them to ob_x // 
    ob_x.Display(); 

    cout<<endl; 
    getche(); 
    return 0; 
} 
-4

당신은 xprivate을 만들면 다른 클래스에서 액세스 할 수 없습니다. 이것이 프로그램이 오류를주는 이유입니다. public으로 만들면 프로그램이 작동하기 시작합니다.

+0

그게 효과가있다.하지만 그가 공개되기를 원하지 않는다면 어떻게 될까? – 0x499602D2

+1

감사하지만 우리는 공공연하게 변수를 만들 때 위험이 있다는 것을 대학에서 알게되었는데, 나는 틀린가? – user3723837

+1

위험은 컴파일러가 불평하지 않고 의미 론적 오류를 만들 수 있다는 것입니다. – deviantfan

관련 문제