我有一个基础数据成员类:
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
访问数据/运行函数,除了基类提供的有用函数。
如果不能将 DataClassList
中的私有(private) DataClass
成员更改为 DerivedDataClass
,我就无法从 DerivedDataClass
调用函数> 在 DerivedDataClassList
中。
最佳答案
基本上,您不需要。私有(private)意味着私有(private)——它只属于那个类。正确的方法是有访问函数。
如果这个类有访问那个成员的特殊要求,那么它应该被保护[然而,这是一个相当愚蠢的概念,因为它根本没有提供任何保护 - 任何想要进入那个领域的人只需要从类派生,瞧,他们可以自由访问]。
感谢 jogojapan 指出我遗漏了一点。使用模板的答案是一种解决方案。另一种是在基类中使用指针,然后让访问函数将 private_data
设置为提供的类成员。哪个是“正确的”取决于你想做什么。例如,如果它是某种元素的列表(例如图形对象(窗口、菜单等)或游戏对象),而您实际上希望它们是一个列表 [或几个类似的列表],那么使用指针是正确的解决方案。如果您有多种不同类型的对象,这些对象从未以通用方式使用,那么模板类可能是正确的选择。
关于c++ - 我可以在派生类中继承私有(private)成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14109972/