0

所以我正在尝试为类 E 编写一个复制构造函数,以便它将从每个类中获取每个 int x 并将其分配给它的对应对象。如何投射右侧?

class A
{
public:
    int x;
};

class B: public virtual A
{
public:
    int x;
};

class C: public virtual A
{
public:
    int x;
};

class D : public B, public C
{
public:
    int x;
};

class E: public D
{
public:
    int x;

    E(const E& e)
    {
        E::x = (E)e.x // problem
        D::x = ?
        C::x = ?
        B::x = ?
        A::x = ?
    }
};
4

2 回答 2

0
E::x = e.E::x;
D::x = e.D::x;
C::x = e.C::x;
B::x = e.B::x;
A::x = e.A::x;

尽管给每个类一个合适的复制构造函数可能更明智,并有一个合适的初始化列表调用基类的复制构造函数。

于 2013-07-12T00:18:11.083 回答
0

您无需强制转换 int 即可将其分配给 int。做就是了:

self->x = ((E)e).x;
D::x = ((D)e).x;
于 2013-07-11T17:01:11.170 回答