0

まず第一に、私は初心者であり、この問題についていくつかの調査を行いました。

5 つのクラスを作成しsuperbasebase3 つの派生クラスを作成しました。

class superbase
{


    QList<base*> listofbase;  //Composition relation between super base and base

    // some other attributes 

    public:

    superbase(); // or other overloaded constructor

};

class base
{
    int i;

    public:

    base();

};

class derived1 : // Which inheritance should be used with base
{
    int j;

    public:

    derived1();   // or other overloaded constructor

};

class derived2 : // Which inheritance should be used with base
{
    int k;

    public:

    derived2();   // or other overloaded constructor

};

class derived3: // Which inheritance should be used with base
{
    int l;

    public:

    derived3();   // or other overloaded constructor

};
  • superbasebase合成関係を持つ
  • derived1derived2notderived3からのみ継承base superbase
  • クラスにはメソッドはありません
  • 仮想継承も試しましたが、適切に取得できません。どこでも「ダイヤモンドの問題」について言及していますが、これは同じではありません。

私の仕事

  • class( )baseの private 属性として classの複数のオブジェクトを作成することになっています。基本クラスの各オブジェクトには、派生クラス ( 、または) の複数のオブジェクトを含めることができます。superbaseQList< base* > listofbase;derived1derived2derived3

質問:

  1. すべての派生クラスが基本クラス object の 1 つのコピーのみを共有するように、派生クラスのオブジェクトを作成するにはどうすればよい ですか?
  2. ベース オブジェクトのコピーを 1 つだけ生成するために、派生クラスで使用する必要がある継承はどれですか?
4

1 に答える 1

-1

静的ファクトリと保護されたコンストラクタを使用して、Baseクラスでそれを実現します。

于 2013-03-01T14:05:49.083 に答える