D'accord,
Voici ce que j'essaie de faire ... En ce moment, il s'agit de la compilation mais d'échec à la liaison ... LNK2001 P>
Je veux les méthodes statiques car il n'y a pas de membre Les variables, mais je les souhaite également en ligne pour les accélérations qu'ils fournissent. P>
Quelle est la meilleure façon de faire cela? Voici ce que j'ai en un mot: p> J'essaie de le faire parce que je veux pouvoir aller: p> FOO n'a pas de variables de membre ... Cela n'a pas de sens. P> p>
4 Réponses :
Vous devez définir votre fonction inline dans le fichier d'en-tête et non un fichier de mise en œuvre distinct. Les définitions sont nécessaires lorsque le fichier d'en-tête est #Inclus, s'ils sont espérons être inlinés, après tout. P>
La défaillance de la liaison que vous voyez est que la déclaration (dans le fichier d'en-tête) n'informe pas le compilateur que la méthode doit être en ligne, alors que la mise en œuvre est en ligne, donc non disponible pour la liaison. P>
Si vous appelez la barre d'un autre fichier CPP, autre que FOO.CPP, il doit être dans un fichier d'en-tête. P>
Tout d'abord, je les mettrais dans un espace de noms code> plutôt, car il n'y a pas de logique du tout dans ce "classe" code>. Deuxièmement, vous pouvez définir le corps des fonctions dans le fichier d'en-tête directement pour permettre au compilateur de les voir. Sinon, vous avez besoin de
Optimisation du programme entier CODE> à effectuer par la liaison pour l'inlinication de ces fonctions (AFAIK). P>
Ouais tu as probablement raison de l'espace de noms ... je les ai eu dans des cours parce qu'ils avaient toutes une fonctionnalité similaire
Les fonctions généralement intégrées sont implémentées où elles sont déclarées (dans le fichier d'en-tête). Le compilateur est libre de fonctions en ligne que vous les avez, mais vous ne pouvez pas force em> pour rien en ligne. Si vous utilisez Visual C ++, activez "Inline Toute ligne appropriée", "Génération de code temporel de liaison" et "Favoriser le code rapide". P>
De plus, d'un point de vue du design, serait-il possible d'utiliser une référence à un flotteur plutôt qu'à un pointeur? Une référence est généralement préférée.
Oui, je sais ... mais dans ce cas je ne peux pas me contenter de la dynamisme :)