2016-04-02 13 views
0

ich erstellt, kurz gesagt, einem txt-Datei-Konverter.Dynamische Module Klassen in C++

Ich habe nur erstellt varius Methoden zur Umwandlung der Datei (ex (im Grunde Textdateien zu entfernen Kommentare usw. in andere Textdateien konvertiert) Entfernen die "#" Symbole usw.). In der Zukunft möchte ich auch andere Methoden hinzufügen, ohne den ursprünglichen Code zu berühren. Ich möchte eine weitere Klassendatei in einem Unterordner hinzufügen und den Code neu kompilieren. Dann würde die neue Konvertierungsmethode in meinem Programm erscheinen.

Wie ich das tun?

+0

Suchen Sie [guide] (https://msdn.microsoft.com/en-us/en-en/library/ms235636.aspx) wie das? Sie fragen nicht ganz klar ist, werden für die Möglichkeiten suchen, wieder verwendbare Code-Basis für die Erstellung, die oder unplugged aus Kern gesteckt werden kann, oder vielleicht ein Muster incapsulating einen Kern functuionality? – Aristarhys

Antwort

0

Grundsätzlich verwenden Sie virtuelle Memberfunktionen in einer Klasse und/oder Vorlagenparameter, wie Anpassungspunkte.

Für Laufzeit-Polymorphismus (virtuelle Member-Funktionen) dies die open/closed principle genannt wird, nach Betrand Meyer:

Eine Klasse geschlossen ist, da sie in einer Bibliothek gespeichert erstellt werden können , Baseline, und von Client-Klassen verwendet. Es ist jedoch auch offen, da jede neue Klasse es als übergeordnetes Element verwenden und neue Features hinzufügen kann. Wenn eine Nachkommenklasse definiert ist, ist es nicht erforderlich, das Original zu ändern oder seine Clients zu stören.

Für Ihren speziellen Fall wäre es natürlich ein “ Umwandlungsverfahren darzustellen ” als ein Objekt, das Sie auf einen allgemeinen Text-Datei-Konverter Funktors Objekt übergeben, die dann die es intern verwendet. Alternativ kann die “ Konvertierungsmethode ” eine virtuelle Funktion auf letzterer sein. Auf diese Weise ein Verfahren mit Anpassungspunkte der Bereitstellung wird die template method pattern genannt.

Hinweis: das Wort “ Vorlage ” in “ Template-Methode Muster ” bezieht sich nicht auf C++ Vorlagen, sondern eher auf den Begriff des kundengerechten Verfahrens als Vorlage für jede konkrete Anpassung.

+0

Ich denke, was du mir gesagt hast, ist nicht das, wonach ich suche. In einem griechischen Forum bat ich sie, mir meine zusätzlichen Quelldateien mit einem Platzhalter "SOURCES = $ (Wildcard-Erweiterungen/* .cpp)" zu kompilieren und dann die Klassen, die Kontributoren in den Unterordnern machen, irgendwo zu registrieren, um sich zu benutzen. (Wenn man es aus dem Griechischen www.insomnia.gr/topic/605154-modules-στην-c/#entry54765332 übersetzen kann) –

+0

Hm. Ich denke mehr Details über das Problem werden benötigt, um bessere Ratschläge zu geben. –

+0

Soll ich meinen ersten Beitrag bearbeiten oder einen neuen erstellen? –