2011-08-23 46 views

回答

7

这就是所谓的反射,不是C++语言的一部分。可以用通常称为工厂模式的东西来实现。它的工作方式是,对于您想要创建的每种类型,都可以在可以创建此类型的对象的函数与其名称之间创建映射。

这种映射可能像std::map那样简单,其中键是类的名称,值是指向返回类的新实例的函数的函数指针。

+0

我认为总称是内省。 –

+4

@Preet:正如术语所言,来自拉丁文的intro_spection_只会成为关于_observing_的反射部分。 –

+0

+1哇 - 很好的反击! –

0

你将不得不依赖引入反射对象的框架,比如Qt元对象系统,或者编写你自己的对象。

但是,这不是真实的反射,只能用于手动帮助,无论是以需要调用工具的形式,还是以必须将可实例化类注册到框架的形式。

2

根据您的问题的确切要求,您可能会询问有关反思(在最常见的情况下),该语言不是本机支持的,但您可能会找到某些库或某种形式的工厂模式,您可以在其中创建一个接收一组参数并返回相应类型对象的函数。第二种情况是一种更为有限的情况,其中类型必须相关,并且必须实施工厂...

因此,您可以根据您的特定要求扩展问题吗?

相关问题