8

基本クラスと 2 つの派生クラスがあり、例のように、派生クラスのオブジェクトへのポインターを他のクラスの 1 つにコピーする必要があります。

class Base
{
public:
    Base(const Base& other);
}

class Derived1 :public Base
{
public:
    Derived1(const Derived& other): Base(other){...};
}

class Derived2: public Base
{
public:
    Derived2(const Derived& other): Base(other){...};
}

main()
{
    Derived 1 d1;
    Derived2 d2(d1)
}

Derived 1 ti ベース (アップキャストが許可されている) から渡し、次に *dynamic_cast* ベースから Derived2 に渡して、コピー コンストラクターを呼び出そうとしましたが、うまくいきません。2 つの派生オブジェクト間で、両方のオブジェクトの Base 部分をコピーするだけです。

4

1 に答える 1

5

基本クラスの部分をコピーするだけの場合は、基本クラスを受け取るコンストラクターを作成します。

Derived2(const Base& other): Base(other){...};

Derived1(const Base& other): Base(other){...};
于 2012-12-19T10:01:28.847 に答える