派生指针,该怎么解决

派生指针
C/C++ code

class BASE
{
public:
        BASE(): aa(293) {}
        virtual void print() {cout<<"Hello\n";}
        virtual void set() {aa = 103;}
        int aa;

};

class Derived : private BASE  //换成protected也一样
{
public:
        //Derived(): BASE(103) {}
        BASE* pr(Derived* d)
        {
             return d;
        }
        void set(){aa=39;}
        void print(){;cout<<"World\n" << this->aa << endl;}
};

int main()
{
//BASE *p = new Derived;//为什么派生类的指针不能给基类
Derived dd;
BASE *p = dd.pr(new Derived); //这样就行,原先我理解。private继承,基类中的所有成员在派生类中为private访问
//编译器拒绝将 派生类的指针转换到基类。。是为了防止,用户调用在派生类中 已经是private基类的成员。。
//难道这不是派生类指针?

p->print();
cout << p->aa << endl;
p->set();
cout << p->aa;

}




------解决方案--------------------
http://hi.baidu.com/wchwho/blog/item/3e6494abb0ed3aaecb130c3e.html
------解决方案--------------------
帮顶,等 evencoming 的答案。。。
------解决方案--------------------
探讨
http://hi.baidu.com/wchwho/blog/item/3e6494abb0ed3aaecb130c3e.html

------解决方案--------------------
引用:
不管是什么继承,子类中都可以访问父类中所有public和protected的成员。
private继承只是表明继承关系是private的,而不表明所有成员的访问权限也是private的,这完全是两码事。
讲得通俗点,private继承是指“外界”不知道那个类还有个父类,而不是子类自己也不知道他有个父类。就像私有成员一样,外界不知道类有私有成员,不代表类自己也不了解自己的私有成员。