我有一个父类,从那个父类中又派生出两个公共派生类。例如:
class Parent
| |
| |
| |
class derived1 class derived2.
问题: 我想从一个派生类访问另一个派生类的私有成员。我该怎么做?
现在的方式如下: 将cDerived1对象作为参数传递给cDerived2的构造函数。如果我这样做,那么我必须将cDerived2声明为cDerived1的友元,并在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);
}
我是否正确地做了这件事,还是我做错了什么非常明显的事情?
谢谢。
针对保罗的评论回应: 我已经在父类中拥有共享代码,如下所示。
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 ?
pArr
在基础内存中,你难道不能请求一个基础指针吗? - Kerrek SB