悲鳴 (!) 演算子をオーバーロードして、次のようにベクトルの長さを返そうとしています: (! は小文字の「L」のように見えるため、簡潔さと読みやすさのために単項演算子が必要でした。 )
// Vector class in Vector.h
class Vector {
public:
double x,y,z;
/* ... */
double operator ! (); /* Vector length */
/* ... */
}
// Function definition in Vector.cpp
double Vector::operator ! (){
return sqrt(x*x+y*y+z*z);
}
// Main function in main.cpp
#include "vector.h"
int main (int argc, char** argv){
Vector a = Vector(1,2,3);
cout << !a << endl;
}
そして、gcc から取得しているエラー コードは次のとおりです。
$ gcc -lstdc++ main.cpp
Undefined symbols for architecture ********:
"Vector::operator!()", referenced from:
_main in ********.o
ld: symbol(s) not found for architecture ********
collect2: ld returned 1 exit status
(注: C++ の経験がないため、または自己教育のためにスキップした言語の非常に基本的なテナントに違反することをしようとしているために、この質問に対する答えを見つけることができませんでした。)