2011-11-04 3 views
0

J'essaie d'inclure mon en-tête de classe dans la mise en œuvre principale et de ma classe. La chose la plus étrange est que le fichier d'en-tête est trouvé par le principal, mais avec l'implémentation de la classe, je n'ai "aucun fichier ou répertoire de ce type". Pourquoi est-ce arrivé? Je veux dire quelles sont les raisons possibles d'un fichier dans mon projet est capable de trouver un fichier d'en-tête parfaitement, mais un autre fichier dans le même projet ne peut pas trouver le même fichier d'en-tête identique.Y compris les fichiers en C++

J'utilise CodeBlocks 10,05

Merci

+2

Exécutez-vous '#include" blah.h "' ou '#include '? Les fichiers sources sont-ils dans des répertoires différents? –

+0

Pouvez-vous coller une idée (éventuellement avec des objets sensibles au projet) de la structure du projet? Quel système de construction utilisez-vous et quelles sont les options (comme -I) qui sont envoyées au compilateur? –

+1

Vous ne devez pas inclure l'implémentation. Incluez l'en-tête et c'est tout. Le fichier d'implémentation sera toujours compilé. – Pubby

Répondre

0

Assurez-vous que vos répertoires sont configurés à droite, et tant que la mise en œuvre est inclus dans le projet, il devrait compiler correctement. Aussi, comme l'a dit Fred Larson, assurez-vous de mettre des "guillemets" autour du fichier, pas des parenthèses inclinées, sinon il regarde dans les répertoires standards où il ne trouvera pas votre fichier.

+0

J'ai décidé de renoncer à Codeblocks et de passer à Xcode, où il trouve le fichier d'en-tête. Merci pour vos réponses! – user1017485

1

La liste des chemins recherchés par le compilateur pour les en-têtes doit être différente lors de la compilation de l'implémentation de la classe.

L'implémentation de la classe et les fichiers principaux sont-ils dans le même répertoire? Sinon, le problème pourrait être que sur la plupart des compilateurs, le premier chemin recherché est le répertoire contenant le fichier en cours de compilation *, et l'en-tête est dans le même fichier que le fichier principal, mais pas le fichier d'implémentation.

Je ne sais pas si votre compilateur l'offre, mais certains ont un mode verbeux qui liste les chemins recherchant des en-têtes. Si mon commentaire ci-dessus n'aide pas alors peut-être que ce sera le cas.

  • En supposant que vous incluez le fichier en utilisant des guillemets. La seule différence entre l'utilisation de guillemets et de chevrons dans vos inclusions est que l'utilisation de guillemets signifie que le répertoire contenant le fichier .cpp est recherché dans les en-têtes avant tous les autres chemins répertoriés (sur la ligne de commande, dans les variables d'environnement, le système inclut les chemins).