标题:运算符重载问题求助
只看楼主
zhang197771
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-8-28
结帖率:50%
 问题点数:0 回复次数:10 
运算符重载问题求助
#include <iostream.h>
class complex
{
public:
    complex(double x,double y);
    complex operator+(complex x);
    complex operator-(complex x);
    void display();
private:
    double real;
    double imange;
};
complex::complex(double x=0,double y=0) {real=x,imange=y;}
complex complex::operator+(complex z)
{
    complex zz;
    zz.real=z.real+real;
    zz.imange=z.imange+imange;
    return complex(zz.real,zz.imange);
};
void complex::display()
{
    cout<<"("<<real<<","<<imange<<")"<<endl;
};
void main()
{
    complex c1(3,5),c2(2,3),c3;
    cout<<"c1=";c1.display();
    cout<<"c2=";c2.display();
    c3=c1+c2;
    cout<<"c3=c1+c2=";c3.display();
}
66.cpp
F:\66\66.cpp(16) : error C2512: 'complex' : no appropriate default constructor available
F:\66\66.cpp(27) : error C2512: 'complex' : no appropriate default constructor available
Error executing cl.exe.

按照教程的演示编写的,可编译出错,不知道什么原因,请高手帮忙分析下。
搜索更多相关主题的帖子: void double complex private display 
2012-09-21 20:28
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
只是觉得 iostream.h 和 void main 比较别扭,别的应该没什么大问题呀。楼主是看什么书学的呢?
2012-09-21 20:46
zhang197771
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-8-28
得分:0 
回复 2楼 pangding
东南大学何洁月讲师的教学视频学的。看着很想睡觉,但基本快学完了,已经学到多态了。
编译时候提示的这个错误是什么意思
F:\66\66.cpp(16) : error C2512: 'complex' : no appropriate default constructor available


[ 本帖最后由 zhang197771 于 2012-9-21 22:47 编辑 ]
2012-09-21 22:42
zhang197771
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-8-28
得分:0 
另外,版主,能给我讲解一个完整的对话框程序吗,就是运行起来,输入输出都是对话框中进行的那种,我在网上搜的都是些编好的代码,没老师讲解,很多函数都不知道是从哪钻出来的。
2012-09-21 23:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
error C2512: 'complex' : no appropriate default constructor available
这个错误提示翻译过来是“没有适合的默认构造函数”
如果以后出现一些语法错误,可以先尝试去百度一下错误号,比如 C2512,一般这都比论坛问来的快。如果百度到的东西帮助不大,再来论坛问更好,毕竟论坛要等几个小时才会人回答,但优点是针对性比较强。

你说的那种对话框程序得专门学。
找点《windows核心编程(Windows Via C/C++)》之类的书会介绍很多。这本书就比较权威,而且讲得很系统,有点难。《windows程序设计》也不错,好像更基础一些,不过我没看过。


[ 本帖最后由 pangding 于 2012-9-22 08:24 编辑 ]
2012-09-22 08:16
zhang197771
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-8-28
得分:0 
回复 5楼 pangding
既然程序本身没问题,那为什么会出现“没有适合的默认构造函数”这样的错误提示吗?能分析下吗?

[ 本帖最后由 zhang197771 于 2012-9-22 12:03 编辑 ]
2012-09-22 12:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
不是很清楚。我手头也没有 vc。楼主是用的 vc6.0 吗?
2012-09-22 21:47
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
得分:0 
不管它嘛,按照提示的错误,
complex没有缺省构造函数,就给个缺省complex();

试了vs2008下是能过的,应该和楼主用的编译器有关。

无为而为 && 每天进步一小点...
2012-09-24 09:02
lwbkfc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:17
注 册:2012-9-24
得分:0 
vs2010

#include <iostream>
using namespace std;
class complex
{
public:
    complex(double x,double y);
    complex operator+(complex x);
    complex operator-(complex x);
    void display();
private:
    double real;
    double imange;
};
complex::complex(double x=0,double y=0) {real=x,imange=y;}
complex complex::operator+(complex z)
{
    complex zz;
    zz.real=z.real+real;
    zz.imange=z.imange+imange;
    return zz;
};
void complex::display()
{
    cout<<"("<<real<<","<<imange<<")"<<endl;
};
void main()
{
    complex c1(3,5),c2(2,3),c3;
    cout<<"c1=";c1.display();
    cout<<"c2=";c2.display();
    c3=c1+c2;
    cout<<"c3=c1+c2=";
    c3.display();
}
2012-09-25 00:06
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
得分:0 
运行没什么问题!不过最好还是用#include<iostream>  using namespace std;比较好,.h一般都是c语言的头文件,在c++中应少用!
2012-09-25 19:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-381840-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.173829 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved