C++新手问题:编译时提示:[Linker error] undefined reference to `operator*(double, complex c
我想写一个复数乘实数的函数(其中的复数是一个叫complex的class):classcomplex{private:doublem_r;//实部doublem_i;//...
我想写一个复数乘实数的函数(其中的复数是一个叫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);
不知道这是为什么。希望高手解答一下,谢谢!! 展开
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);
不知道这是为什么。希望高手解答一下,谢谢!! 展开
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
展开全部
如果你的参数是const 的话,那你就可以给这个函数传一下常数 比如 12
但如果你的参数不是const的话,就只能传一个变量的类型,而不能传一个常量
但如果你的参数不是const的话,就只能传一个变量的类型,而不能传一个常量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果我记得没错,会先编译friend那个函数,后编译类中的操作符重载,所以你不能在friend中调用类中的操作符重载,反之则可以
更多追问追答
追问
你好!抱歉啊你似乎没看到我问题结尾处的“如果我把两个函数的参数都改成const的,就可以顺利编译”……因此应该不是你说的这个问题。事实上我看的书中就是在friend中调用操作符重载的,也并没有出现问题。关键应该是这个const的问题。谢谢!
追答
你用的什么编译器?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在调用*操作符的时候,参数可能是一个const类型的!而在你的定义中,参数是非const类型,编译器不确定你会不会修改参数的值,所以不会为你的const类型调用非const版本!
我想应该是这样的,不知道能不能帮到你
我想应该是这样的,不知道能不能帮到你
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询