gpt4 book ai didi

c++ - "unprivate"是 C++ 继承中的一个元素吗?不行怎么办?

转载 作者:行者123 更新时间:2023-11-30 04:43:07 24 4
gpt4 key购买 nike

如果我想继承“BaseClass”但我必须管理其中一个私有(private)成员,我可以用这样的东西“取消私有(private)”吗?:

using BaseClass::private_member;

如果不是,当某些成员未按应有的方式标记为 protected 时该怎么办?如果不可能,那意味着我们不应该继承我们没有开发的类?

最佳答案

If i want to inherit from "BaseClass" but i have to manage one of the private members, can i "unprivate" it with something like this?

没有。私有(private)成员不能由派生类管理。如果你认为你必须管理一个基类的私有(private)成员,那么某人的设计或实现是错误的。它可能是有缺陷的基类,但要保持开放的心态——一定要考虑缺陷存在于您的设计中的可能性。 (更好的是,假设缺陷可能存在于您的设计中,直到证明并非如此。)

If not, what to do when some of the members are NOT marked as protected as it should be?

首先,验证这个假设。该成员应该被标记为 protected ,还是您试图滥用基类? 如果成员确实应该被标记为 protected ,那么要做的就是修复基类。如果基类不受您的控制,请提交错误报告。

If is not possible, that means we are not supposed to inherit from classes that we did not develop?

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

关于c++ - "unprivate"是 C++ 继承中的一个元素吗?不行怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com