是否可以"unprivate" C++继承中的元素?如果没有怎么办?

Is possible to "unprivate" an element in C++ inheritance? What to do if not?

本文关键字:元素 怎么办 如果没有 继承 unprivate C++ 是否      更新时间:2023-10-16

如果我想从"BaseClass"继承,但我必须管理其中一个私有成员,我可以用这样的东西"取消私有"它吗?

using BaseClass::private_member;

如果没有,当某些成员没有被标记为应有的protected时该怎么办?如果不可能,这意味着我们不应该从我们没有开发的类继承?

如果我想从"BaseClass"继承,但我必须管理其中一个私有成员,我可以用这样的东西"取消私有"它吗?

不。私有成员不能由派生类管理。如果您认为必须管理基类的私有成员,那么某人的设计或实现是错误的。可能是基类有缺陷,但要保持开放的心态 - 一定要考虑缺陷在你的设计中的可能性。(更好的是,假设缺陷可能在你的设计中,除非证明不是这样。

如果没有,当某些成员未被标记为应有的受保护时该怎么办?

首先,验证此假设。是否应将成员标记为受保护,或者是否尝试滥用基类?如果确实应该将成员标记为受保护,那么要做的是修复基类。如果基类不受您的控制,请提交错误报告。

如果不可能,这意味着我们不应该从我们没有开发的类继承?

不,这意味着你不应该建立在有缺陷的基础上。(或者这可能意味着您应该使用基类设计而不是反对它。那里有很多实现良好的基类。为手头的工作使用正确的工具。