gpt4 book ai didi

C++防止某个类的派生类对两个类的多重继承

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

有点冗长的标题,但这里是:

我有一种情况,我想防止两个类被同一个类或家族的任何类派生。在代码中:

    class A;
class B;

class C: public A; //Yes.
class D: public B; //Yes.

class E: public A, public B; //Yes.
class F: public C, public B; //Yes.

class G: public A /*Disallow inheritance of B at this point somehow*/;
class H: public G, public B; //Error at this point...

class I;
class J: public G, public I; //...but not at this point.

在这种情况下,A 和 B 的私有(private)成员对任何派生类都保持私有(private),而友元会破坏该设计。我怎样才能做到这一点?

最佳答案

虽然没有真正深入研究,但它看起来像是一个典型的问题,过去常常使用静态(编译时解析)多态性来解决。此类框架的基本方法是 CRTP元编程模式(仅仅是因为您在如何使用或组合父类/基类方面为继承类引入了强有力的策略)。

看看如何提供

  • type traits (在符合 C++11 标准之前,有一些库可用于支持此功能)
  • 概念检查(有几个库支持这个,例如 boost::concept_check)
  • SFINAE和/或显式(编译时)错误条件

您可能会考虑使用各种离散的客户端帮助程序 (API) 类来为您的最终类聚合接口(interface)实现;这是指在编译单元中隐藏某些实现,并最终隐藏创建具体实例所需的工厂。

关于C++防止某个类的派生类对两个类的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118646/

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