目前我们有一组代码允许服务插件提供与核心的通信形式,例如tcp / ip,udp / ip,usb等...这些服务插件将通知程序类实例反馈到核心以进行进一步处理
在当前实现中,服务项目(由运行dlopen和朋友在运行时引入的单独的动态链接库)将针对驻留在核心源代码中的notifier.cpp文件进行编译(单独的项目) 。这样可以访问通知程序方法实现。这完全没有抱怨。
两种替代选择: 1.将通知程序方法实现放在头文件中。 2.声明通知程序方法virtual和延迟绑定直到运行时。
避免计算开销问题选项2的影响是什么?
我们还有其他选择吗?
由于
答案 0 :(得分:2)
是的,向消费者公开具有纯虚函数的接口是从Windows DLL公开C ++对象的标准方法。客户端不知道任何实现细节:没有成员变量,没有成员函数体,只是虚拟布局。
(添加引用计数和dynamic_cast
的语言无关版本,我们称之为QueryInterface
,你有COM,这在Windows上很普遍)
这种技术在* nix共享库上也可以正常工作。