找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 2013|回复: 2

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

[复制链接]
发表于 2009-11-5 00:36:26 | 显示全部楼层 |阅读模式 IP:江苏扬州
定义复数类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);
}
发表于 2009-11-5 00:36:27 | 显示全部楼层 IP:江苏扬州
c2 = 4.0 + c2; ->   c2 = c2+4.0;
我没编译器 你看看这么改下对不对
我很久没用了 拿不准
回复

使用道具 举报

发表于 2009-11-5 00:36:28 | 显示全部楼层 IP:江苏扬州
可以的
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 07:42 , Processed in 0.223821 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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