私は、VectorMathクラスの静的メソッドを呼び出して計算を実行するVector3Dクラスを作成しています。私はコンパイルするとき、私はこれを取得:静的メソッドに関するC++リンカの問題
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 returned 1 exit status
コード:
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
なぜリンカがVectorMath::norm
方法を見つけることができませんか?一見私は私はこのような規範を宣言する必要があるだろうと思うだろう:
Vector3D* VectorMath::norm(Vector3D* vector) {
が、それはあなたがVectorMath.cpp
でVector3D::norm
メソッドを定義していない...
これは「どちらでも役に立たない」という情報は十分ではありません。どういう意味ですか?同じエラー、異なるエラー? – GManNickG