Un de mes devoirs implique trois fichiers: LineType.h, LineType.cpp et Driver.cpp. Driver.cpp contient la méthode main() qui utilise une classe définie par LineType.h et LineType.cpp.Quand dois-je # inclure les fichiers .cpp?
Sur mon système, Driver.cpp commence par:
#include "LineType.h"
#include "LineType.cpp"
#include <iostream>
Et le programme fonctionne parfaitement et compile quand je lance g++ Driver.cpp
à partir du répertoire de projet via la ligne de commande. Cependant, lorsque mon instructeur tente de compiler le programme (je crois qu'il utilise Eclipse), il ne compile pas. Après quelques va-et-vient, elle a pu résoudre le problème sur son extrémité en commentant l'un des #includes de Driver.cpp:
#include "LineType.h"
//#include "LineType.cpp"
#include <iostream>
Lorsque je tente d'exécuter g++ Driver.cpp
sur ce fichier modifié, mon Le compilateur se plaint de "symboles non définis pour l'architecture", ce que je comprends pour signifier qu'il ne peut pas trouver de définitions pour la classe/méthodes étant appelé.
Qu'est-ce que mon instructeur et moi faisons différemment pour causer cette différence de comportement? Pourquoi une ligne requise par mon compilateur fait-elle échouer son compilateur?
Les débutants ne doivent * jamais * inclure les fichiers source. Au lieu de cela, vous devriez lire sur * compilation * et * fichiers séparés * et * liaison *. –
Vous ne devez jamais "# inclure" un fichier cpp. – Justin