【发布时间】:2010-09-23 09:26:49
【问题描述】:
我正在考虑使用typeid(),但我不知道如何询问该类型是否是另一个类的子类(顺便说一句,它是抽象的)
【问题讨论】:
-
我只是想知道是否有办法在 C++ 中检查对象的类型是否是在编译时的特定子类,因为
std::is_base_of无法按预期工作. :3 -
您能否详细说明“std::is_base_of 无法正常工作”?我用 gcc C++20 和 VS C++17 都试过了;当类不是从基类派生时,它给了我一个编译器错误。例如,对于
struct A {};和struct B {};这两个结构,static_assert (std::is_base_of_v <A, B>);行在编译时失败,但对于struct DerivedFromA : public A {};,static_assert (std::is_base_of_v<A, DerivedFromA>);行编译正常。
标签: c++ class subclass identification