J'écris une classe Vector3D qui appelle une méthode statique sur une classe Vectormath pour effectuer un calcul. Quand je compile, je reçois ceci: Code: p> vectormath.h: b> p> vectormath.cpp b> p> vector3d.cpp b> p> Pourquoi le lieur ne peut-il pas trouver le mais cela n'aide pas non plus ... p> p > Vectormath :: Norm Code> Méthode? À première vue, je penserais que je devrais déclarer la norme comme ceci: p>
3 Réponses :
Vous n'avez pas défini vector3d :: NORM code> méthode dans
vectormath.cpp code>. Au lieu de cela, vous avez défini une fonction globale nommée
norme code>. Ce que vous devez faire est de qualifier le nom de la méthode dans la définition:
Vector3D* Vector3D::norm(Vector3D* vector)
Vous avez 24 secondes plus vite que moi. : [
Vous manquez ceci:
int main(void) { Vector3D v(x, y, z); Vector3D normVector(v.norm()); }
Ok, merci, cela semble fonctionner. Je jure que j'ai essayé cela auparavant et ça échoua - mais ça marche maintenant ... merci pour les indicateurs de la fuite de mémoire ... Je suppose que je vais poser une nouvelle question à propos de ceux-ci ...
Vector3D* VectorMath::norm(Vector3D* vector) { // can't be found by linker // do vector calculations return new Vector3D(xHead, yHead, zHead, xTail, yTail, zTail); }
Ceci: "Mais cela n'aide pas non plus ..." n'est pas assez d'informations. Qu'est-ce que ça veut dire? Mêmes erreurs, différentes erreurs?