Domanda

Sto lavorando a un piccolo gioco usando C ++ e ho usato il generatore di classi Eclipse CDT. Ha creato un file .h con le definizioni di classe e un file .cpp che includeva metodi privi di corpo per detta classe.

Quindi se seguissi il modello, avrei un file .cpp riempito con le dichiarazioni dei metodi e un file .cpp con i corpi dei metodi. Tuttavia, non posso includere un file .cpp in un altro.

Quindi qual è la convenzione in C ++ con le classi e i file include? Quello che ho fatto è stato compilare i corpi del metodo proprio sotto la dichiarazione di classe nel file .h ed eliminare il file .cpp.

È stato utile?

Soluzione

Non è necessario includere il file .cpp. Includere il file .h è tutto ciò che serve. .h significa intestazione, cioè tutto ciò che dovrebbe avere sono definizioni di funzioni / oggetti. Le implementazioni effettive vanno nel file .cpp con lo stesso nome. Il linker si occuperà di raddrizzarlo per te.

Il file di intestazione contiene dichiarazioni (noto anche come prototipo). L'inclusione dell'intestazione informa il programma "Dichiaro che esiste qualcosa del genere"

L'utente delle intestazioni ci risparmia lo sforzo di dichiarare metodi ovunque nei nostri file di codice: lo facciamo una volta sola, quindi importiamo il file.

Il file .c / .cpp / .cc include la definizione - che indica al programma lo scopo della funzione.

Non è necessario " includere " file .c perché è quello che fa il compilatore: compila tutti i tuoi file .c in codice macchina.

Altri suggerimenti

Un'altra cosa che puoi fare è creare un file di intestazione usando la direttiva preprocessore ifdef e endif. Ciò impedirà di includere più volte il file di intestazione. Questa è una pratica standard che utilizzo ogni volta che creo un nuovo file di intestazione.

Non sono sicuro di aver capito. I file di intestazione definiscono ciò che la classe è e può fare e la includi in tutti i file di origine che devono utilizzare la classe.

Il file sorgente implementa il modo in cui la classe fa la sua azione.

Tuttavia, puoi includere un .cpp in un altro (puoi includere qualsiasi cosa in qualsiasi cosa), ma non è necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top