如何为此问题创建对象?

时间:2013-03-01 13:41:06

标签: c++ qt inheritance multiple-inheritance derived-class

首先,我想说我是初学者,我就此问题进行了一些研究

我创建了五个类superbasebase和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

};
  • superbasebase具有构图关系
  • derived1derived2derived3仅从base 继承superbase
  • 继承
  • 没有方法
  • 我也试过虚拟继承,但是我没有正确地继承它,因为每个人都提到“钻石问题”,但这不一样。

我的任务

  • 我应该创建base类的多个对象作为superbase类(QList< base* > listofbase;)的私有属性。基类的每个对象都可以包含派生类的多个对象(derived1derived2derived3)。

问题:

  1. 如何为派生类创建对象,以便所有派生类只共享一个基类对象的单个副本
  2. 必须在派生类中使用哪种继承来仅生成基础对象的单个副本?

1 个答案:

答案 0 :(得分:-1)

使用静态工厂和受保护的构造函数在Base类中实现它。