class A
{
    A (A & a);
    .......
}
class B : public A
{
   B (B & b);
   .......
}
class C : public B
{
   C (C & c);
   ..........
}我现在用C类建了一个实例,调用赋值构造函数。但我希望让基类进行一些赋值工作,因为从基类继承的成员太多。我用这样的方法
C (C & c) : B(B(c))
{
.....
}
想把c强制转化成B类的,然后调用B类的赋值构造函数。但这样不行。请问,那应该用什么样的方法?
还有,把一个小类的指针强制转化成它的派生类的,即使那些共有的成员也会出错。那我如何可以把一个小类的变成大类的?(比如共有的成员赋值,没有的给0)。是不是用上面的方法?或者还有什么好方法?谢谢。

解决方案 »

  1.   

    你的第一个问题,我觉得你范了一个C++ 理解上的错误。
    因为C类对B类是继承关系,所以C类中的Copy  构造函数
    C(C &c)会在内部自动调用B类的Copy 构造函数,当然这部分代码是由编译器安插进去的。
    所以,你只要在A,B,C类中的Copy构造函数中完成相应类的数据成员的初始化即可。
      

  2.   

    第二个问题,没有理解你的意思。
    #include <iostream.h>
    class CA
    {
    public:
    CA(){}
    int x;
    };class CB:public CA
    {
    public:
    CB(){}
    int y;
    };void main(void)
    {
    CA *pa = new CA;
    pa->x = 23;
    CB *pb = (CB *)pa;
    cout<<pb->x<<endl; //ok
    cout<<pb->y<<endl; //error
    }