2011-06-05 1 views
2

Lors de mes recherches dans le code source de Geant4, j'ai remarqué plusieurs fois qu'il y a des méthodes qui sont déclarées dans l'en-tête mais qui ne sont jamais définies avec un code associé (pardonner mon jargon (je suis un ingénieur)).méthodes déclarées, mais jamais définies dans le code source Geant4

Un exemple serait une méthode définie comme:

G4TrackVector* GetfSecondary(); 

qui n'a pas mise en œuvre dans l'en-tête ou le fichier source, n'est pas virtuel, mais il est utilisé à plusieurs reprises par le programme et le programme s'exécute à partir de ce code compilé. Au début, je pensais que c'était juste du code caché avec doxygen, mais je vois maintenant que ce n'est pas le cas! Ceci est une occurrence commune dans le code.

Quelqu'un pourrait-il expliquer ce qui se passe?

Merci

+0

@ user487100 Vous ne pouvez pas encore commenter car votre compte n'a pas posé la question et compte moins de 50 points. Si 'Johnny' est un autre de vos comptes, connectez-vous avec ces informations d'identification et vous pourrez commenter. Alternativement, posez de bonnes questions et donnez de bonnes réponses et vous serez capable de commenter partout;) – phihag

Répondre

0

Le code ne manquera pas de compiler si tel était le cas. Vous ne cherchez pas au bon endroit pour sa définition. Ou juste ne pas le remarquer. Appeler une fonction déclarée sans définition est une erreur.

+1

Techniquement, cela compilerait bien mais échouerait à lier. – ildjarn

1

La fonction GetSecondary() fait partie de la classe G4Step (définie dans G4Step.hh) et est implémentée en ligne dans G4Step.icc. G4Step.icc est inclus à la fin de G4Step.hh.

Je suppose que vous recherchiez dans le répertoire source au lieu du répertoire include pour l'implémentation, mais le répertoire include est l'emplacement de l'implémentation en ligne. À l'avenir, si vous êtes sur * nix, vous pouvez essayer un grep -r <FunctionName> . à partir du haut du répertoire du projet pour trouver toutes les mentions d'une fonction, qui devrait inclure l'implémentation.

Questions connexes