J'apprends C ++ et j'ai reçu une affectation pour créer une classe Vector3D. Lorsque j'essaie de compiler main.cpp en utilisant g ++ sur OSX, je reçois le message d'erreur suivant. Pourquoi cela serait-ce?
#include <math.h>; #include "Vector3DStack.h"; Vector3DStack::Vector3DStack (double a, double b, double c) { x = a; y = b; z = c; } double Vector3DStack::getX () { return x; } double Vector3DStack::getY () { return y; } double Vector3DStack::getZ () { return z; } double Vector3DStack::getMangitude () { return sqrt (pow (x, 2) * pow (y, 2) * pow (z, 2)); }
3 Réponses :
Vous devez compiler et relier votre vector3d pile.c ++ code> aussi. Essayez:
g++ main.cpp Vector3DStack.cpp -o vectortest
Passez la mise en œuvre de Ceci produira exécutable appelé C'est le moyen le plus simple possible de construire votre programme. Vous devriez apprendre un peu plus - lire sur vector3d code> au compilateur:
a.out code> sur les systèmes Linux et Unix . Pour modifier l'option
-o code> --o p>
faire code>
programme, ou Même CMAKE . P> P>
J'avais couru dans un problème similaire lors de la rédaction de ma propre implémentation d'une haquetable avec des modèles. Dans votre principal.cpp, incluez simplement "vector3dstack.cpp", qui inclut vector3dstack.h, au lieu de juste y compris vector3dstack.h. P>
Dans mon cas, puisque les modèles, comme nous le savons, sont évalués à l'heure de la compilation, avec des méthodes templatumatisées (y compris des méthodes entièrement spécialisées) dans la classe dans le cadre du fichier CPP (où elles sont définies) doivent être connues dans le compilateur . Certaines des gotchas C ++ .. Tellement à retenir, facile d'oublier les petites choses. P>
La plupart du temps, vous avez déjà reçu notre solution, grâce aux réponses postées plus tôt, mais à ma 0,02 $ de toute façon. P>
Programmation Happy C ++! P>
Essayez de supprimer les points-virgules après la conception.
Merci pour votre suggestion, mais cela ne semblait pas marcher?