2011-01-19 11 views
0

여기 내 문제가 :1 클래스에서 생성 된 "이웃"클래스에 액세스 할 수 있습니까?

2 개의 다른 클래스의 두 개의 새 인스턴스를 만드는 하나의 클래스가 있는데, 이제는 인스턴스 중 하나에서 다른 인스턴스로 직접 가용성을 가져야합니다. 가능한 경우 if 그래서 방법?

너무 :

b = new B(5); // where 5 is an int data member of B 
c = new C(); 

및하자 B : 꿀벌() 나는의 멤버에 액세스해야합니다, 나는 C()에서 액세스 할 필요가 함수가 될하지만 : 클래스 A의

B (B의 새 인스턴스가 아닙니다.)

So C::getIntfromB(){ 
    b->getInt(); 
} 

또는 뭔가. 내가 만드는 중이라서 명백한 오류가 무엇인지, 그러나 나는 단순히이 제대로 동작하지 않습니다 어떤 이유로 C

에 대한 B b; 개인 회원을 가진

b = new B(5); 
c = new C(*b); 

:

내가가는 시도했습니다 ?

+0

문제 코드 게시 – YeenFei

답변

0

귀하의 C 회원은 포인터 또는 참조 (B *b 또는 B &b) 여야합니다. B 인 경우 B 개체가 복사되므로 다른 인스턴스 (해당 인스턴스를 복사하여 만들어 짐)를 참조하게됩니다.

또한 포인터 또는 참조로 b 개체를 전달해야합니다. 그렇지 않으면 매개 변수를 전달하는 동안 새 인스턴스가 만들어지고 C 클래스의 포인터/참조가 해당 개체를 참조합니다. (예 : 복사 될 것이기 때문에 이것은 또한 다른 문제를 야기 할 것이다 임시 C의 생성자를 반환 즉시 파괴하기)

0

주된 이유 객체 B에서 올바른 데이터에 액세스 할 수 없습니다 개체 CC은 기존 피어 개체 B을 참조하는 대신 개체 B '의 자체 복사본을 가지고 있기 때문입니다.

관련 문제