1

我已经开发了一段时间。这些野兽不时出现在 MFC、wxWidgets 代码中,但我找不到任何关于它们具体做什么的信息。

据我了解,它们出现在 dynamic_cast 集成到核心 C++ 之前。目的是允许动态创建对象和运行时动态转换。

但这就是我找到的所有信息的终点。

我遇到了一些在 DLL 中使用 DECLARE_DYNAMIC_CLASS 和 IMPLEMENT_DYNAMIC_CLASS 的示例代码,这些代码用于导出的类。这种结构让我感到困惑。

为什么这样做?这是一种基于插件的方法,您调用 LoadLibrary 然后调用 CreateDynamicClass 来获取可以转换为所需类型的指针?

DECLARE/IMPLEMENT_DYNAMIC 是否在 DLL 边界上工作?既然连class对DLLEXPORT都不是那么安全,这里我们除了现有的问题外还有一个自定义的RTTI表。

是否可以从另一个 DLL 的 DYNAMIC_CLASS 派生我的类,它是如何工作的?

谁能解释一下这些东西的用途,或者我在哪里可以找到关于一个主题的两个以上的句子?

4

2 回答 2

1

这些东西为你的类附加了额外的类型信息,这允许以独立于运行时的方式进行 RTTI,让工厂创建你的类和许多其他东西的可能性。您可以在 COM、QMetaObject 等处找到类似的方法

于 2013-03-04T08:28:54.823 回答
0

你看过 DECLARE/IMPLEMENT_DYNAMIC 的定义了吗?

在 MS 世界中,所有大写字母通常表示一个宏,因此您只需查找定义并尝试从那里弄清楚它在做什么。如果您在 Visual Studio 中,您可以点击一个键来跳转到定义 - 看看它说了什么,然后查找并尝试从那里开始工作。

于 2013-03-04T02:33:07.067 回答