6
votes

C ++ Problèmes liés à la méthode statique

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: xxx

Code:

vectormath.h: xxx

vectormath.cpp xxx

vector3d.cpp xxx

Pourquoi le lieur ne peut-il pas trouver le Vectormath :: Norm Méthode? À première vue, je penserais que je devrais déclarer la norme comme ceci: xxx

mais cela n'aide pas non plus ...


1 commentaires

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?


3 Réponses :


4
votes

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)


1 commentaires

Vous avez 24 secondes plus vite que moi. : [



17
votes

Vous manquez ceci:

int main(void) {
    Vector3D v(x, y, z);
    Vector3D normVector(v.norm());
}    


1 commentaires

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 ...



0
votes
Vector3D* VectorMath::norm(Vector3D* vector) { // can't be found by linker
    // do vector calculations
    return new Vector3D(xHead, yHead, zHead, xTail, yTail, zTail);
}

0 commentaires