当前,我们有一系列代码,该代码允许服务插件,这些插件向核心,例如TCP/IP,UDP/IP,USB等提供通信形式...这些服务插件反馈通知器类实例到核心进行进一步处理。

在当前实施中,一个服务项目(这是由核心通过dlopen和friends在运行时带入的单独的动态链接库)将对位于核心源代码(单独的项目)中的notifier.cpp文件进行编译。这可以访问“通知器方法”实现。这完全没有抱怨。

两个替代选项:1。将Notifier方法实现放在标题文件中。 2.声明通知方法虚拟和延迟绑定到运行时。

避免计算开销的问题,选项2的影响是什么?

我们还有其他选择吗?

谢谢

有帮助吗?

解决方案

是的,将带有纯虚拟函数的接口向消费者公开是从Windows DLL公开C ++对象的标准方法。客户不知道任何实现详细信息:没有成员变量,没有成员函数主体,只有虚拟布局。

(添加参考计数和语言不可思议的版本 dynamic_cast, ,我们会称呼 QueryInterface, ,您有com,在窗户上普遍存在)

此技术在 *NIX共享库中也可以正常工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top