C++新手问题:编译时提示:[Linker error] undefined reference to `operator*(double,complex c我想写一个复数乘实数的函数(其中的复数是一个叫complex的class):class complex{private:double m_r; //实部double m_i; //虚

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/11 00:49:39

C++新手问题:编译时提示:[Linker error] undefined reference to `operator*(double,complex c我想写一个复数乘实数的函数(其中的复数是一个叫complex的class):class complex{private:double m_r; //实部double m_i; //虚
C++新手问题:编译时提示:[Linker error] undefined reference to `operator*(double,complex c
我想写一个复数乘实数的函数(其中的复数是一个叫complex的class):
class complex
{
private:
double m_r; //实部
double m_i; //虚部
public:
complex operator*( double x) ;
friend complex operator*( double x,complex& st);
……剩下的省略
}
definition:
complex complex::operator*(double x)
{
complex result;
result.m_r=m_r*x;
result.m_i=m_i*x;
return result;
}
complex operator*(double x,complex& st)
{
return st*x;
}
但是编译时提示C++新手问题:下面的程序编译时提示 [Linker error] undefined reference to `operator*(double,complex c,如果我把两个函数的参数都改成const的,就可以顺利编译:
complex operator*(const double x) const ;
friend complex operator*(const double x,const complex& st);

C++新手问题:编译时提示:[Linker error] undefined reference to `operator*(double,complex c我想写一个复数乘实数的函数(其中的复数是一个叫complex的class):class complex{private:double m_r; //实部double m_i; //虚
你在调用*操作符的时候,参数可能是一个const类型的!而在你的定义中,参数是非const类型,编译器不确定你会不会修改参数的值,所以不会为你的const类型调用非const版本!
我想应该是这样的,不知道能不能帮到你