| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:请问这程序为什么编译会出错,怎么样修改
只看楼主 加入收藏
biancku
Rank: 2
等 级:论坛游民
帖 子:41
专家分:19
注 册:2010-11-30
结帖率:64.71%
收藏
已结贴  问题点数:5 回复次数:4 
请问这程序为什么编译会出错,怎么样修改
文件1.h
#include<iostream>
using namespace std;
class complex
{
public:
    complex() {real=0; imag=0;}
    complex(double r)
    {
        real=r;
        imag=0;
    }
    complex(double r,double i):real(r),imag(i){}
    friend complex operator + (complex &c1,complex &c2);
    operator double ()  {  return real; }
    void display() const;
private:
    double real;
    double imag;
};
complex operator+(complex &c1,complex &c2)
{
    return complex( c1.real+c2.real,c1.imag+c2.imag);
}
void  complex::display() const
{
    cout<<"("<<real<<","<<imag<<"i)"<<endl<<endl;
}
文件2.cpp
#include"1.h"
int main()
{
    complex c1(5,3),c2(5,4),c;
    double d;
    c1.display();
    c2.display();

    cout<<"c=c1+c2 = ";
    c=c1+c2;
    c.display();

    cout<<"2.5+c1 = ";
    c=2.5+c1;
    c.display();*/

    cout<<"c1+2.5 = ";
    c=c1+2.5;
    c.display();

    cout<<"complex c=2.5+2.5 = ";
    c=2.5+2.5;
    c.display();

    cout<<"double d=2.5+c1 = ";
    d=2.5+c1;
    cout<<d<<endl<<endl;*/
    return 0;
}
编译时的错误显示:
Compiling...
2.cpp
e:\程序a\1232\1.h(13) : fatal error C1001: INTERNAL COMPILER ERROR
        (compiler file 'msc1.cpp', line 1786)
         Please choose the Technical Support command on the Visual C++
         Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.

2.obj - 1 error(s), 0 warning(s)
搜索更多相关主题的帖子: friend 
2011-02-20 11:13
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
   cout<<d<<endl<<endl;*/
c.display();*/


If You Want Something, Go Get It, Period.
2011-02-20 17:12
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-02-20 22:05
dwyhewy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-1-20
收藏
得分:0 
用了std名字空间,不没有必要再写“endl”
2011-02-22 11:06
homelove
Rank: 2
来 自:厦门
等 级:论坛游民
帖 子:19
专家分:84
注 册:2010-12-21
收藏
得分:5 
是vc6的问题,我再vs2008下编译通过。
vc6下解决办法1,添加红色两行就ok了
程序代码:
#include<iostream>
using namespace std;
class   complex;
complex operator + (complex &c1,complex &c2);
class complex
{

public:
    complex() {real=0; imag=0;}
    complex(double r)
    {
        real=r;
        imag=0;
    }
    complex(double r,double i):real(r),imag(i){}
    friend complex operator+ (complex &c1,complex &c2);
    operator double ()  {  return real; }
    void display() const;
private:
    double real;
    double imag;
};

complex operator+(complex &c1,complex &c2)
{
    return complex( c1.real+c2.real,c1.imag+c2.imag);
}
void  complex::display() const
{
    cout<<"("<<real<<","<<imag<<"i)"<<endl<<endl;
}

 
2011-02-22 16:36
快速回复:请问这程序为什么编译会出错,怎么样修改
数据加载中...
 
   



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

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