Scrivere altro C ++ descrittivo
In C ++ non hai per usare le intestazioni. Puoi definire l'intero oggetto in un file come faresti con C # o Java. Gli sviluppatori C in genere mantengono solo le chiamate esterne in un file di intestazione. Tutte le chiamate interne sarebbero definite nel file .c. Allo stesso modo, è possibile riservare i file .h C ++ per le classi / interfacce (classi astratte virtuali pure) / ecc. che sono destinati ad essere condivisi al di fuori della DLL. Per le classi / le strutture / interfacce interne, ecc. Devi semplicemente includere il file .cpp di cui hai bisogno:
#include<myclass.cpp>
Questo non sembra essere l'approccio più popolare, ma è legale C ++. Sarebbe sicuramente una possibilità per tutto il tuo codice interno. Ciò consente al codice interno e all'insieme di classi di cambiare molto più radicalmente fornendo un'interfaccia più stabile per il codice esterno alla libreria / eseguibile con cui interagire.
Avere l'intera classe in un file renderà più facile fare ciò che vuoi. Non risolverà il problema della ridenominazione di un metodo e di dover cercare in ogni posto che viene chiamato il metodo, ma si assicurerà di avere messaggi di errore più intelligibili. Niente di peggio che avere il tuo header dichiarare un metodo in un modo, ma lo implementa in modo diverso. L'altro codice che chiama il file di intestazione verrà compilato correttamente e otterrete un'eccezione di collegamento, mentre il file di implementazione sarà quello che si lamenta del fatto che il metodo non è stato definito. Quando definisci tutti i metodi in atto (nella dichiarazione della classe effettiva), riceverai lo stesso messaggio di errore indipendentemente dal file che lo include.
Puoi anche dare un'occhiata a questa domanda: Buoni strumenti di refactoring per C ++
Come C / C ++ risolve i file di intestazione / implementazione
Al livello di base C (e C ++ è costruito su quella base), i file di intestazione dichiarano promessa di una funzione / struct / variabile che è sufficiente per consentire a un compilatore di creare il file oggetto . Allo stesso modo i file di intestazione C ++ dichiarano la promessa di funzioni, strutture, classi, ecc. È questa definizione che il compilatore usa per riservare spazio nello stack, ecc.
I file .c o .cpp hanno l'implementazione. Mentre il compilatore converte ogni file di implementazione in un file oggetto, ci sono degli hook per i concetti non implementati (ciò che è stato dichiarato nell'intestazione). Il linker lega i ganci alle implementazioni in altri file oggetto e crea un binario più grande che include tutto il codice (libreria condivisa o eseguibile).
VS specifico
Per quanto riguarda il lavoro con quelli in Visual Studio, ci sono alcuni wizard che aiutano a rendere le cose un po 'più semplici. La procedura guidata della nuova classe creerà la coppia corrispondente di file di intestazione e implementazione. Esiste anche una funzione browser di classe che ti consentirà di dichiarare nuovi metodi. Inietterà la definizione nell'intestazione e lo stub di implementazione nel file .cpp. Visual Studio ha avuto queste caratteristiche per più di un decennio (a patto che li abbia usati).