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 に答える