Vous pouvez dire un fichier .cpp et tous ses en-têtes inclus constituent une unité de traduction. Comme son nom l'indique, une unité de traduction est compilée seule. Le résultat, souvent appelé fichier.o ou fichier.obj, de chaque unité de traduction, est ensuite lié par l'éditeur de liens, en corrigeant des références non résolues. Donc dans votre cas, vous avez
Translation Unit 1 = run.cpp: myclass.h ...
Translation Unit 2 = myclass.cpp: myclass.h ...
Votre définition de classe apparaîtra dans les deux unités de traduction. Mais ça va. C'est permis, tant que les deux classes sont également définies. Mais il n'est pas permis d'avoir la même fonction dans les deux unités de traduction si la fonction n'est pas en ligne. Les fonctions non intégrées ne peuvent être définies qu'une seule fois, dans une seule unité de traduction. Ensuite, vous avez l'éditeur de liens prendre le résultat de chaque unité de traduction, et les lier ensemble à un exécutable:
Executable = mystuff: run.o myclass.o ...
Je suis d'accord médecin! ci-dessus aussi: http: // stackoverflow.com/questions/533076/understanding-c-compilers-from-a-java-c-perspective/533201 # 533201 – bobby