标题:偶是初学者,友元怎么实现不了了
只看楼主
hao0717
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-13
 问题点数:0 回复次数:4 
偶是初学者,友元怎么实现不了了
这个程序
#include <iostream>
using namespace std;
//-------------------
class Point{
int x,y;
public:
Point(int a,int b):x(a),y(b){}
void print()const{cout<<"("<<x<<","<<y<<")\n";}
friend Point operator+(const Point& a,const Point& b);
};
//-------------------------
Point operator+(const Point& a,const Point& b){
Point s(a.x+b.x,a.y+b.y);
return s;
}
//---------------------------
void main(){
Point a(2,3);
Point b(4,7);
(a+b).print();
}

我编译怎么老出错,报错: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

我照书编也有错误,WHY?
难道编译器也有错误?为什么???求救啊
搜索更多相关主题的帖子: Point const operator 
2006-01-13 21:35
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
得分:0 

void main()

改成

int main()试试


2006-01-13 23:49
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
得分:0 

是编译器的错误 程序没有问题

因为运算符重载为友员函数在这个编译器里就不能通过 试试别的编译器吧


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-01-14 18:08
cuifeng
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-1-21
得分:0 

你的这个程序我用VC6.0测试了,的确是错了,你说你是照着书敲的,不要完全依赖书,书也难免会有错误的地方,但是我怀疑你的那个operator+重载运算符,使用的不对,我的感觉是这个重载运算符只能接受一个参数,下面是经过我测试后的程序,你看看是不是想得到这个结果,我的QQ号是110046204,邮箱是mccy_13@163.com如果哪位朋友想交流的话,请加我!
//----------------------------------------
//此为头文件Test.h


#include <iostream>
using namespace std;

class Point
{
private:
int x,y;
public:
Point();
Point(int a,int b);
~Point();

Point operator+(const Point& c)const;
void print()const;
};

//-----------------------------------------
Point::Point()
{
x=y=0;
}

//-----------------------------------------
Point::Point(int a,int b)
{
x=a;
y=b;
}
//-----------------------------------------
Point::~Point()
{
cout<<"You Use Destructor!"<<endl;
}
//----------------------------------------


Point Point::operator+(const Point& c)const
{
Point sum;
sum.x=x+c.x;
sum.y=y+c.y;
return sum;
}

void Point::print()const
{
cout<<"("<<x<<","<<y<<")\n";
return;
}

//Test.cpp
#include "Test.h"

int main()
{
Point arr1(2,3);
Point arr2(4,7);
arr1.print();
arr2.print();
Point sum;
sum=arr1+arr2;
sum.print();



// sum.print();
return 0;
}

2006-01-22 09:08
love_me
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2005-12-29
得分:0 

Visual C++ 概念:生成 C/C++ 程序

致命错误 C1001



内部编译器错误

(编译器文件 file,第 number 行)

编译器无法生成正确的构造代码,原因可能是出自表达式与优化选项的组合。尝试移除一个或多个优化选项,并重新编译包含错误信息所指示的行的函数。

通过移除一个或多个优化选项有可能解决该问题。若要确定哪一个选项出了问题,请一次移除一个选项并重新编译,直到错误信息消失为止。通常最有可能导致此错误的选项有 /Og/Oi/Oa。确定了哪一个选项是症结所在后,则可以对发生错误的函数使用 optimize 杂注来禁用它,并为模块的其余部分继续使用该选项。

尝试重写报告错误的行或围绕该行周围的若干行。如果这不起作用,请与 Microsoft 产品支持服务联系。


灌水无罪! 顶贴有理! <0_0>
2006-01-22 18:14



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




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

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