关于C++私有承继的一个问题

class Base{}; class Exe {public:void Add(Base* p){}}; class DD :private Base { public: DD(Exe* pinv) {pinv->Add(this);} }; int main() { Exe* pInv = new Exe; DD dd(pInv); //Base* pB = new DD(pInv); return 0; } 

 

各位,请留意上面的代码,DD私有继承于Base,但在DD的构造函数中,竟然可以将DD向上转换为Base,

而代码中被注释的部分确不能编译通过,提示: error C2243: 'type cast' : conversion from 'DD *' to 'Base *' exists, but is inaccessible

 

各位高人,请解释一下到底是怎么回事.

你可能感兴趣的:(关于C++私有承继的一个问题)