7
votes

G ++ symboles non définis pour l'architecture x86_64

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));
}


2 commentaires

Essayez de supprimer les points-virgules après la conception.


Merci pour votre suggestion, mais cela ne semblait pas marcher?


3 Réponses :


23
votes

Vous devez compiler et relier votre vector3d pile.c ++ code> aussi. Essayez:

g++ main.cpp Vector3DStack.cpp -o vectortest


0 commentaires

7
votes

Passez la mise en œuvre de vector3d au compilateur: xxx

Ceci produira exécutable appelé a.out sur les systèmes Linux et Unix . Pour modifier l'option -o --o xxx

C'est le moyen le plus simple possible de construire votre programme. Vous devriez apprendre un peu plus - lire sur faire programme, ou Même CMAKE .


0 commentaires

4
votes

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.

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.

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.

Programmation Happy C ++!


0 commentaires