C ++ Virtuelle Schlüsselwort als eine Möglichkeit, einschließlich Codeeinheiten zu vermeiden

StackOverflow https://stackoverflow.com/questions/4631329

Frage

Zur Zeit haben wir einen Körper aus Code, die Service-Plugins ermöglicht, die Formen der Kommunikation mit dem Kern bietet zB TCP / IP, UDP / IP, USB, etc ... Dieses Service-Plugins Feedback Notifier Klasseninstanzen auf den Kern für die weitere Verarbeitung .

In der aktuellen Implementierung ein Service-Projekt kompiliert gegen die notifier.cpp-Datei (die eine separate dynamisch verknüpfte Bibliothek in dem Kern über dlopen und Freunde zur Laufzeit gebracht ist), dass liegt in der Kern Quellcode (ein separates Projekt) . Dies ermöglicht den Zugriff auf den Anmeldern Methodenimplementierungen. Das funktioniert perfekt keine Beschwerden.

Zwei alternative Optionen: 1. Legen Sie die Anmelder-Methode Implementierungen in der Header-Datei. 2. erklären die Anmelder Methoden virtuelle und Verzögerung Bindung bis zur Laufzeit.

Die Vermeidung der Probleme des Rechenaufwand, was sind die Auswirkungen der Option 2?

Gibt es noch andere Möglichkeiten, die uns?

Danke

War es hilfreich?

Lösung

Ja, eine Schnittstelle mit rein virtuellen Funktionen für die Verbraucher auszusetzen ist der normale Weg C des Aussetzen ++ Objekte aus einem Windows-DLL. Der Kunde ist nicht bekannt, dass Implementierungsdetails. Keine Membervariablen, kein Member-Funktion Körper, nur virtuelles Layout

(Add Referenzzählung und eine sprachunabhängig Version von dynamic_cast, die wir QueryInterface nennen wollen, und Sie haben COM, die auf Windows allgegenwärtig)

Diese Technik wird gut funktionieren auf * nichts gemeinsam genutzte Bibliotheken als auch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top