Pregunta

En la actualidad tenemos un cuerpo de código que permite que los plugins de servicios que ofrecen formas de comunicación hasta la médula por ejemplo, TCP / IP, UDP / IP, USB, etc ... Estos plugins servicio de comentarios notificador instancias de la clase a la base para su posterior procesamiento .

En la implementación actual un proyecto de servicio (que es una biblioteca de enlace dinámico separada traído en tiempo de ejecución por el núcleo a través de dlopen y amigos) se compilará con el archivo notifier.cpp que reside en el código fuente del núcleo (un proyecto separado) . Esto da acceso a las implementaciones de métodos notificadores. Esto funciona perfectamente ninguna queja.

Hay dos opciones alternativas: 1. Ponga el notificador implementaciones de métodos en el archivo de cabecera. 2. declaran los métodos notificador virtual y retardo de unión hasta que el tiempo de ejecución.

Evitar los problemas de sobrecarga de cálculo Cuáles son los impactos de la opción 2?

¿Hay otras opciones disponibles para nosotros?

Gracias

¿Fue útil?

Solución

Sí, exponiendo una interfaz con funciones virtuales puras para los consumidores es la forma estándar de la exposición de objetos de C ++ desde un archivo DLL de Windows. El cliente no tiene conocimiento de los detalles de implementación:. No hay variables miembro, no hay cuerpos de las funciones miembro, simplemente diseño virtual

(conteo Agregar referencia y una versión independiente del idioma de dynamic_cast, que llamaremos QueryInterface, y tiene COM, que es un fenómeno generalizado en Windows)

Esta técnica funcionará bien en las bibliotecas compartidas * nix también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top