부모 클래스가 있고 그 부모 클래스의 공개 파생 클래스가 2 개 있습니다. 예.다른 파생 클래스에서 파생 클래스의 멤버에 액세스하는 방법?
class Parent
| |
| |
| |
class derived1 class derived2.
질문 : 내가 다른 파생 클래스에서 하나 개의 파생 클래스의 private 멤버에 액세스하고 싶습니다. 어떻게해야합니까?
내가 가진 방법은 다음과 같습니다. cDerived1 개체를 매개 변수로 cDerived2의 ctor에 전달합니다. 나는 이런 식으로 할 경우, 내가 cDerived1의 친구로 cDerived2를 선언해야하고 또한 cDerived2.h 내부 cDerived1.h을 포함
#include cParent.h
#include cDerived1.h
#include cDerived2.h
void main(){
// Instantiate a cDerived1 object
Derived1 dev1();
// Instantiate a cDerived2 object. The cDerived2 object will need access to the
// private members of cDerived1. So pass dev1 by reference to dev2 ctor.
Derived2 dev2(dev1);
}
이 그것을 할 수 또는 내가 아주 노골적으로 일을하고있는 올바른 방법인가 잘못된 ??
감사합니다.
Paul의 의견에 대한 답변 : 이미 아래에 표시된 것처럼 부모 클래스에 공유 코드가 있습니다.
cParent.h
class cparent{
public:
// ctor
// dtor
protected:
int* pArr;
};
cDerived1.h
// derived1's header
#include "cParent.h"
class cDerived1 : public cParent{
public:
//
};
cDerived2.h
// derived2's header
#include "cParent.h"
class cDerived2 : public cParent{
public:
// I want access to derived1's pArr member over here....How do I do this ?
깨끗한 방법은 공유 클래스를 부모 클래스로 푸시하는 것입니다. 그렇지 않다면, 메소드를 public으로 만들거나 친구 구문을 사용하시오. –
'pArr'가베이스에 있다면, 그냥 기본 포인터를 물어볼 수 없습니까? –