C++ - linker Probleme mit der statischen Methode

Schreibe ich ein Vector3D-Klasse, ruft eine statische Methode auf eine VectorMath-Klasse, um eine Berechnung durchführen. Wenn ich kompilieren, bekomme ich diese:

bash-3.1$ g++ VectorMath.cpp Vector3D.cpp 
/tmp/cc5cAPia.o: In function `main': 
Vector3D.cpp:(.text+0x4f7): undefined reference to 'VectorMath::norm(Vector3D*)' 
collect2: ld zurückgegeben, 1 exit status 

Code:

VectorMath.h:

#ifndef VECTOR3D_H
#include "Vector3D.h"
#endif

class VectorMath {
    public:
    static Vector3D* calculatePerpendicularVector(Vector3D*, Vector3D*);
    static Vector3D* norm(Vector3D*);
    static double length(Vector3D*);
};

VectorMath.cpp

#include "VectorMath.h"
Vector3D* norm(Vector3D* vector) { //can't be found by linker
    //do vector calculations
    return new Vector3D(xHead, yHead, zHead, xTail, yTail, zTail);
}
//other methods

Vector3D.cpp

#include "Vector3D.h"
#include "VectorMath.h"
//...
//vector implementation
//...
int main(void) {
    Vector3D* v = new Vector3D(x, y, z);
    Vector3D* normVector = VectorMath::norm(v); //error here
}        

Warum kann nicht der linker findet die VectorMath::norm Methode? Auf den ersten Blick würde ich denken, dass ich hätte erklären müssen-norm so:

Vector3D* VectorMath::norm(Vector3D* vector) {

aber nicht geholfen...

  • Diese: "aber nicht geholfen..." ist nicht genug Informationen. Was bedeutet das? Gleicher Fehler, andere Fehler?
InformationsquelleAutor | 2009-07-31
Schreibe einen Kommentar