gpt4 book ai didi

C++如何优雅地处理不被继承的友情

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:53 24 4
gpt4 key购买 nike

我有一组类

class myClassA{
friend class MyFatherClass;
};

class MyFatherClass{
...
};

class MySonClass : public MyFatherClass {
};

我的父类可以访问类 MyClassA 的所有方法。我还希望所有扩展 MyFatherClass 的类都能够调用此类方法。

我只能看到 2 个选项:

  1. 我随时都可以在 myClassA 中添加新类(class)为 friend 。 (我不喜欢)
  2. 我在父函数中创建了一些 protected 包装器以访问类 myClassA 中的方法。 (稍微好一点,但我仍然不喜欢它,因为我必须随时创建一个新的包装器,在 myClassA 中创建一个新方法)

你有什么更优雅的解决方案吗?

谢谢

最佳答案

首先……优雅是什么意思?您编写的代码更少?我建议您不要在可读性方面妥协。

使用友元不应该是一个轻率的决定。 SO 上有很多线程处理这个问题,但在这里我假设您已经知道这意味着什么。

选项 1) 更具可读性。当有人看到这个类时,他们将直接知道谁有权访问它。代码应该是有表现力的,这个选项完美地描述了意图。

选项 2) 有点矫枉过正。您正在编写一个包装器,以便您可以访问某些函数...为什么不首先将它们设置为 public,因为该包装器具有公共(public)访问权限。它只是一个额外的抽象层。

您应该首先考虑功能(两者都有效)、表现力和可读性(此处选项 1 肯定更好)。

关于C++如何优雅地处理不被继承的友情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8294599/

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