Schreiben Sie mehr Refactoring Friendly C ++
In C ++ Sie nicht haben , um Header überhaupt. Sie können das gesamte Objekt in einer Datei wie in C # oder Java definieren. C-Entwickler speichern normalerweise nur externe Aufrufe in einer Header-Datei. Alle internen Aufrufe werden in der C-Datei definiert. Ebenso können Sie Ihre C ++ .h-Dateien für die Klassen / Interfaces (rein virtuelle abstrakte Klassen) / etc reservieren. die außerhalb der DLL freigegeben werden sollen. Für interne Klassen / Strukturen / Schnittstellen usw. fügen Sie einfach die benötigte CPP-Datei ein:
#include<myclass.cpp>
Dies scheint nicht der populärste Ansatz zu sein, aber es ist legal C ++. Es wäre definitiv eine Möglichkeit für all Ihren internen Code. Dadurch können sich der interne Code und die Gruppe von Klassen wesentlich radikaler ändern und gleichzeitig eine stabilere Schnittstelle für den Code außerhalb Ihrer Bibliothek / ausführbaren Datei zur Interaktion bereitstellen.
Wenn Sie Ihre gesamte Klasse in einer Datei haben, können Sie leichter tun, was Sie wollen. Es löst nicht das Problem, eine Methode umzubenennen und nach jedem Ort zu suchen, an dem diese Methode aufgerufen wird, stellt jedoch sicher, dass verständlichere Fehlermeldungen angezeigt werden. Es gibt nichts Schlimmeres, als wenn Ihr Header eine Methode in eine Richtung deklariert, aber Sie implementieren sie anders. Anderer Code, der die Header-Datei aufruft, wird ordnungsgemäß kompiliert, und Sie erhalten eine Link-Ausnahme, während die Implementierungsdatei diejenige ist, die sich darüber beschwert, dass die Methode nicht definiert wurde. Wenn Sie jede Methode direkt definieren (in der eigentlichen Klassendeklaration), wird dieselbe Fehlermeldung angezeigt, unabhängig davon, in welcher Datei sie enthalten ist.
Vielleicht möchten Sie sich auch diese Frage ansehen: Gute Refactoring-Tools für C ++
Wie C / C ++ Header- / Implementierungsdateien auflöst
Auf der Basis-C-Ebene (und C ++ baut auf dieser Grundlage auf) deklarieren die Header-Dateien das Versprechen einer Funktion / Struktur / Variablen, die ausreicht, damit ein Compiler die Objektdatei erstellen kann. In ähnlicher Weise deklarieren C ++ - Headerdateien das Versprechen von Funktionen, Strukturen, Klassen usw. Mit dieser Definition reserviert der Compiler Speicherplatz im Stapel usw.
Die C- oder CPP-Dateien haben die Implementierung. Da der Compiler jede Implementierungsdatei in eine Objektdatei konvertiert, gibt es Verknüpfungen zu nicht implementierten Konzepten (was im Header deklariert wurde). Der Linker verknüpft die Hooks mit den Implementierungen in anderen Objektdateien und erstellt eine größere Binärdatei, die den gesamten Code enthält (gemeinsam genutzte Bibliothek oder ausführbare Datei).
VS-spezifisch
Für die Arbeit mit Visual Studio gibt es einige Assistenten, die die Arbeit etwas erleichtern. Der neue Klassenassistent erstellt das passende Paar aus Header- und Implementierungsdateien. Es gibt sogar eine Klassenbrowser-Funktion, mit der Sie neue Methoden deklarieren können. Die Definition wird in den Header und der Implementierungs-Stub in die CPP-Datei eingefügt. Visual Studio bietet diese Funktionen seit mehr als einem Jahrzehnt (sofern ich sie verwendet habe).