我有一个基本的数据成员类:

class DataClass {
}

和一个子类:
class DerivedDataClass : public DataClass {
}

我使用DataClass作为类DataClassList的私有(private)成员
class DataClassList {
  public:
    // some useful functions here
  private:
    DataClass private_data;
}

我想子类化DataClassList来创建一个可以在DerivedDataClass上运行的类
class DerivedDataClassList : public DataClassList {
  // how do i get this class to use DerivedDataClass as the private member?
}

可以在C++中以某种形式完成吗?

编辑:
关于我要执行的操作添加更多注释:
DataClass具有一些有用的功能,我不想在DerivedDataClass中重新定义,并且DerivedDataClass具有自己的功能。因此,继承是有道理的。到目前为止一切都很好。

下一级是问题。 DataClassList具有取决于DataClass函数的有用函数。除了基本类提供的有用功能外,DerivedDataClassList还需要从DerivedDataClass访问数据/运行功能。

无法将DataClass中的私有(private)DataClassList成员更改为DerivedDataClass,我无法从DerivedDataClass中的DerivedDataClassList调用函数。

最佳答案

我假设您想在DataClass中使用private_data对象DerivedDataClassList
如果要使用DerivedDataClass,则需要在某个地方声明DerivedDataClass的对象(我在任何地方都看不到DerivedDataClass的对象)。或者您需要从DerivedDataClass继承-我再次在您的代码中看不到。

class DataClassList
{
    protected:
        DataClass private_data;
};

class DerivedDataClassList : private DataClassList
{
    // DataClass object private_data is like a private member here
};

如果您使private_data成为protectedDataClassList成员而不是private,并且使DataClassList成为private base classDerivedDataClassList,则private_data的作用类似于privateDerivedDataClassList成员。

如果您的原始问题没有输入错误,并且您实际上希望将DerivedDataClass对象作为私有(private)成员,则可以使用指针。
class DataClassList
{
    public:
        DataClassList(DataClass * p) : private_data(p) {}
    protected:
        DataClass * private_data;
};

class DerivedDataClassList : private DataClassList
{
    public:
    DerivedDataClassList():DataClassList(new DerivedDataClass) { }

    // private_data which a pointer to a DerivedDataClass object is like a private member here.
};

08-27 09:07