まず第一に、私は初心者であり、この問題についていくつかの調査を行いました。
5 つのクラスを作成しsuperbase
、base
3 つの派生クラスを作成しました。
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
};
superbase
base
合成関係を持つderived1
、derived2
、notderived3
からのみ継承base
superbase
- クラスにはメソッドはありません
- 仮想継承も試しましたが、適切に取得できません。どこでも「ダイヤモンドの問題」について言及していますが、これは同じではありません。
私の仕事
- class( )
base
の private 属性として classの複数のオブジェクトを作成することになっています。基本クラスの各オブジェクトには、派生クラス ( 、または) の複数のオブジェクトを含めることができます。superbase
QList< base* > listofbase;
derived1
derived2
derived3
質問:
- すべての派生クラスが基本クラス object の 1 つのコピーのみを共有するように、派生クラスのオブジェクトを作成するにはどうすればよい ですか?
- ベース オブジェクトのコピーを 1 つだけ生成するために、派生クラスで使用する必要がある継承はどれですか?