| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 531 人关注过本帖
标题:关于运算符重载函数做为友元函数
只看楼主 加入收藏
suizier
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-3-31
收藏
 问题点数:0 回复次数:3 
关于运算符重载函数做为友元函数

请问这段代码哪里有错啊,我参考了几本书都是这样写的,可是VC6.0怎么通不过呢?


#include <iostream>
using namespace std;

class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}

friend Complex operator + (Complex &c1,Complex &c2);
void display();
private:
double real;
double imag;
};

Complex operator + (Complex &c1,Complex &c2)
{return Complex(c1.real+c2.real,c1.imag+c2.imag);}

void Complex::display()
{cout<<"("<<real<<","<<imag<<"i)"<<endl;
}

int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;

cout<<"c1=";c1.display();
cout<<"c2=";c2.display();
cout<<"c1+c2=";c3.display();
return 0;
}

报错:

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
Error executing cl.exe.

1.obj - 1 error(s), 0 warning(s)

搜索更多相关主题的帖子: 运算符 函数 重载 
2007-03-31 20:24
dlcdavid
Rank: 3Rank: 3
来 自:成都
等 级:新手上路
威 望:6
帖 子:193
专家分:0
注 册:2005-12-23
收藏
得分:0 

同意楼下的,,
+还是用非成员

[此贴子已经被作者于2007-3-31 20:45:40编辑过]


为了C++,我放弃了课本
为了高考,我又放弃了C++
现在而今眼目下,我能做什么?www.
2007-03-31 20:31
游乐园
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:671
专家分:0
注 册:2006-11-1
收藏
得分:0 

程序没有错,加上声明就可以了


程序代码:

#include <iostream>
using namespace std;

class Complex;
Complex operator + (Complex &,Complex &);
//加上声明 ,你的VC++没有打补丁sp6 所以没有提前声明友元是不通过的

class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}

friend Complex operator + (Complex &c1,Complex &c2);
void display();
private:
double real;
double imag;
};

Complex operator + (Complex &c1,Complex &c2)
{return Complex(c1.real+c2.real,c1.imag+c2.imag);}

void Complex::display()
{cout<<\"(\"<<real<<\",\"<<imag<<\"i)\"<<endl;
}

int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;

cout<<\"c1=\";c1.display();
cout<<\"c2=\";c2.display();
cout<<\"c1+c2=\";c3.display();
return 0;
}


unicorn-h.spaces. ◇◆ sava-scratch.spaces.
2007-03-31 20:42
suizier
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-3-31
收藏
得分:0 
谢谢楼上的回答!
2007-03-31 22:28
快速回复:关于运算符重载函数做为友元函数
数据加载中...
 
   



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

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