【问题标题】:How do I determine if a class indirectly inherits from a base class?如何确定一个类是否间接继承自基类?
【发布时间】:2014-10-17 18:55:43
【问题描述】:

您可以使用std::is_base_of 来检查一个类是否从某个基类继承,但我如何知道一个类是否直接从该类继承(即间接从该类继承)?

【问题讨论】:

  • 你是说如果Derived1 继承自Base,而Derived2 继承自Derived1,你想要返回false 给定Derived1Derived2 但返回的东西true 给定 BaseDerived2?
  • @RSahu 是的。如果可能的话,我对 C++11 解决方案持开放态度。副本中的答案也很好。
  • 不是另一个问题的重复。如果有什么相反的。顺便说一句,is_base_of 不仅检测直接碱基,IIRC
  • std::is_convertible<From, To> 我猜还不够吗?
  • N2965 引入了 basesdirect_bases 元函数 (discussed before),这将使您的目标很容易实现。 Support apparently already exists in GCC.

标签: c++


【解决方案1】:

N2965 实施之前是不可能的。

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    相关资源
    最近更新 更多