
这是C++的一个+运算符重载问题,那位高手能帮我分析一下以下代码有什么错误?
#include<iostream.h>classFraction{intnumerator;intdenominator;intsign;public:Fraction...
#include<iostream.h>
class Fraction{
int numerator;
int denominator;
int sign;
public:
Fraction(int n=0,int d=1);
~Fraction();
void setFract(int n,int d);
friend Fraction operator + (const Fraction &f1,const Fraction &f2);
};
这是分数类的定义
以下为+运算符函数的重载实现:
Fraction operator + (const Fraction &f1,const Fraction &f2){
Fraction f;
f.numerator =f1.numerator*f2.denominator+f1.denominator*f2.numerator;
f.denominator=f1.denominator*f2.denominator;
if(f1.sign*f2.sign<0)
f.sign=-1;
else
f.sign=1;
return f;
}
连接错误:
Fraction.cpp
G:\C++\myCpp\chapter7\exp7_16\Fraction.cpp(101) : error C2601: '+' : local function definitions are illegal
G:\C++\myCpp\chapter7\exp7_16\Fraction.cpp(101) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Error executing cl.exe.
Fraction.obj - 2 error(s), 0 warning(s) 展开
class Fraction{
int numerator;
int denominator;
int sign;
public:
Fraction(int n=0,int d=1);
~Fraction();
void setFract(int n,int d);
friend Fraction operator + (const Fraction &f1,const Fraction &f2);
};
这是分数类的定义
以下为+运算符函数的重载实现:
Fraction operator + (const Fraction &f1,const Fraction &f2){
Fraction f;
f.numerator =f1.numerator*f2.denominator+f1.denominator*f2.numerator;
f.denominator=f1.denominator*f2.denominator;
if(f1.sign*f2.sign<0)
f.sign=-1;
else
f.sign=1;
return f;
}
连接错误:
Fraction.cpp
G:\C++\myCpp\chapter7\exp7_16\Fraction.cpp(101) : error C2601: '+' : local function definitions are illegal
G:\C++\myCpp\chapter7\exp7_16\Fraction.cpp(101) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Error executing cl.exe.
Fraction.obj - 2 error(s), 0 warning(s) 展开
若以下回答无法解决问题,邀请你更新回答
2个回答
2011-08-08
展开全部
你写出来的部分没有问题,应该是+运算符函数的重载实现前面那个函数大括弧不配对
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-08
展开全部
检查下细节吧,比如半角什么的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询