【发布时间】:2020-05-20 19:42:16
【问题描述】:
假设我有一些基本抽象类和三个不同的类来派生和实现其方法。是否有像 C# 中的“类型”对象?或者换句话说,我如何获取所有这些类的实例?
#ModuleBase.cpp
class ModuleBase {
};
#Module1.cpp
class Module1 : public virtual ModuleBase {
};
#Module2.cpp
class Module2 : public virtual ModuleBase {
};
#Module3.cpp
class Module3 : public virtual ModuleBase {
};
【问题讨论】:
-
C++ 没有反射。 (还)
-
@MutexMorgan 没有内置功能(对于这两件事)。欢迎使用 C++。 :P
-
基类如何知道它的派生类?想想像谷歌的代码库有数百万个类的代码库,编译器必须遍历所有类才能找到派生类
-
你不能在 C++ 中做到这一点。您可以通过 RTTI(启用 dynamic_cast 的东西)找到有关类型 (
std::type_info) 的非常基本的信息,但您无法了解其父类(复数,因为 C++ 允许多重继承)或派生的类从中。当然,有一些方法可以显式将类注册为公共基类的派生类,但这是您必须在代码中执行的操作。这是一个:web.archive.org/web/20100618122920/http://meat.net/2006/03/…
标签: c++ inheritance virtual-inheritance