设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1994|回复: 2
打印 上一主题 下一主题

[求助]为什么这样不能实现隐式类型转换?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-5 00:36:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
定义复数类Complex
头文件中:
#include <iostream>
using namespace std;

class Complex
{
  friend Complex operator + (Complex&, Complex&);
public:
  Complex();
  Complex(double);//将双精度型转换成Complex型
  Complex(double, double);
  ...
private:
  double real;
  double imag;
};
Complex::Complex(double r)
{
  real = r;
  imag = 0;
}
……
在main文件中

……
Complex c1(3,-4);
c2 = 4.0 + c2;
……
编译时g++说
$ g++ -c main.cpp
main.cpp: In function `int main()':
main.cpp:26: error: no match for 'operator+' in '4.0e+0 + c2'
complex.h:17: note: candidates are: Complex operator+(Complex&, Complex&)

这是为什么?不是系统会隐式调用Complex(double)吗?

还有friend Complex operator + (Complex&, Complex&);
我重载了+
friend Complex operator + (Complex& c1, Complex& c2)
{
  return Complex(c1.real + c2.real, c1.imag + c2.imag);
}
3#
发表于 2009-11-5 00:36:28 | 只看该作者
可以的
回复 支持 反对

使用道具 举报

2#
发表于 2009-11-5 00:36:27 | 只看该作者
c2 = 4.0 + c2; ->   c2 = c2+4.0;
我没编译器 你看看这么改下对不对
我很久没用了 拿不准
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 17:26 , Processed in 0.115957 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表