我试图重载尖叫(!)运算符以返回向量的长度,如下所示:(!因为它看起来像一个小写的“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++ 经验,要么是因为我试图做一些违反我因自学而跳过的语言的一个非常基本的租户的事情。)