【问题标题】:How to determine if a class has no class deriving from it?如何确定一个类是否没有派生类?
【发布时间】:2023-04-04 23:28:01
【问题描述】:

如何判断一个类是否没有派生类?任何类型特征方法有帮助吗?

我想写出一些数据。数据是通过像

这样的指针创建的
unique_ptr<A> a(new A);

如果A类没有子类,我只写出数据内容。如果A有子类,我先写出它的具体类型,再写数据内容。读取数据时,读取具体类型后,就知道使用什么具体类型来创建指针,然后读取数据内容。因此,我想我必须确定 A 是否有子类?

【问题讨论】:

  • 您要解决什么问题?可能有更好的方法。这听起来像X-Y problem
  • 我认为这是不可能的,因为需要单独编译。我同意你应该发布你想要完成的事情。
  • 只使用多态。这就是它的发明目的。
  • @juanchopanza 我认为多态在这里不起作用。
  • A一个虚拟方法,写出你需要的东西。并阅读a good C++ book

标签: c++ typetraits


【解决方案1】:

在 C++11 中,您可以声明一个类final。这确保没有类可以从它派生。见http://en.cppreference.com/w/cpp/language/final

【讨论】:

    【解决方案2】:

    这是不可能的,因为一个类不知道从它派生什么(如果存在)类。

    您可以检查一个类是否派生自另一个类:

    struct foo {};
    
    struct bar : foo {};
    
    static_assert( std::is_base_of<foo,bar>::value );
    

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      相关资源
      最近更新 更多