编译没通过,请高手看看

#include <iostream>
#include <stdlib.h>
using namespace std;
class Fraction
{
private:
int num,den;
private:
int gcf(int a,int b);
void normalize();
int lcm(int a,int b);
public:
Fraction(){ set(0,1);}
Fraction(int a,int b){ set(a,b);}
Fraction(int n){set(n,1);}
Fraction(Fraction const &copy){cout<<"this copy constructor function"<<endl;num = copy.num;den = copy.den;}
void set(int n,int d){num = n;den = d;normalize();}
int get_num(){return num;}
int get_den(){return den;}
Fraction add(Fraction other);
Fraction mult(Fraction other);
bool operator==(const Fraction &other_Fraction)
{return (num == other_Fraction.num &&den == other_Fraction.den);}
friend ostream &operator<<(ostream &os,Fraction &Fra);//这是问题所在,没它是可以编译的
};
void Fraction::normalize()
{
if(den == 0 || num == 0)
{num = 0;
den = 1 ;}
if(den < 0)
{
num *=-1;
den *= -1;
}
if(num == 0 || den == 0)
{
int n = gcf(num,den);
num = num/n;
den = den/n;}
}
int Fraction::gcf(int a,int b)
{
if(a%b==0)
return abs(b);
else
return gcf(b,a%b);
}
int Fraction::lcm(int a,int b)
{return (a / gcf(a,b)) * b;
}
Fraction Fraction::add(Fraction other)
{Fraction fract;
int lcd = lcm(den,other.den);
int quot1 = lcd/den;
int quot2 = lcd/other.den;
fract.set(lcd/other.den*num+lcd/den*other.num,lcd);
return fract;}
Fraction Fraction::mult(Fraction other)
{Fraction fract;
fract.set(num*other.num,den*other.den);
return fract;}
ostream &operator<<(ostream &os,Fraction &Fra)
{os<<Fra.num<<"/"<<Fra.den;
return os;}

177 浏览 1 回复
  fraction   den   int   num   other  

回复

    你的code我在vc6下面可以连接通过
    请给出你的错误信息
    问题补充:错误信息是,友员无法访问私有成员.将私有成员改成公有就通过了
    是不是编译器版本的问题呢?
    如果你是用的非VC的编译器(比如TC)

    那么有可能是你的iostream头文件不一样的原因

    那你人品了
    装一下PSDK Server 2003试试

    唐芸漩

相关信息

关于友元函数的问题

下面是我的程序代码,是一个分数类和一些测试代码.但是明明把operator<<操作符函数重载为友元函数的,但是编译的时候报错说不能访问类私有变量...难道设置成友元也不能访问类变量吗??不解...亟待高手解惑...谢谢... ============================================= \#include <iostream> using...

32 浏览 1 回复   fraction   other   const   int   return  

c++/ return 0:的问题

请问 return 0表示程序运行正常, return 其它值表示程序在运行过程中发生了异常. int main() { return 0; } 和 int main() { return -1; } 这两个程序 执行起来都没有 错误 为什么 int main() 后 就必须返回 return 0;呢 定义一个int函数后 return 1-1000...

51 浏览 3 回复   程序   return   int   返回   main  

关于NUM LOCK

XP启动到欢迎界面的时候要输密码,我的密码是数字,BIOS里面也是设置的开机就打开NUM LOCK,可是每次都要按NUM LOCK把数字锁打开才能输。 请问如何解决,让XP启动到欢迎界面的时候,NUM LOCK是开的呢? 谢谢!

53 浏览 1 回复   num   lock   谢谢   解决   密码  

求助 C语言的问题

如题!

51 浏览 1 回复   int   return   num   10   array  

与SET FMTONLY ON问题

<p>我执行存储过程中使用SET FMTONLY ON,为了效仿我们的代码生成器一样。然而,似乎是,当这样执行的结果会被缓存,因为我仍然得到一个的<em>转换失败 em&gt;的距离,我刚刚把一个进程的错误!当我执行的进程内无SET FMTONLY ON出现这种情况甚至。 P&gt; <p>谁能告诉我这是怎么回事? P&gt; </p></em></p>

50 浏览 1 回复   gt   执行   一个   过程   错误