注册 登录
编程论坛 C++教室

C++ 类,约分函数没有声明?

慢跑20 发布于 2014-05-08 16:17, 1071 次点击
#include<iostream.h>
//using namespace std;
class Fraction
{public:
Fraction(int m,int n){
        zi=m,mu=n;}

        int zi,mu;

friend        Fraction operator+(Fraction &f1,Fraction &f2);
        void yuefen(int m,int n);
        int gongyue(int m,int n);
        void tongfen(int m,int n);
        void display(Fraction &f);
};

void Fraction::display( Fraction &f)
{
        cout<<"  :"<<f.zi/f.mu<<"  "<<endl;
}
Fraction operator + (Fraction &f1,Fraction &f2)
{
        Fraction f3(0,1);
        f3.mu=f1.mu*f2.mu;
        f3.zi=f1.zi*f2.mu+f1.mu*f2.zi;
        yuefen(f3.zi,f3.mu);
        return f3;
};



void Fraction::yuefen(int zi,int mu)
{
        int t;
        t=gongyue(zi,mu);
        zi/=t;
        mu/=t;
}

int Fraction::gongyue(int m,int n)
{
        int t;
        if(m<n){t=m;m=n;n=t;}
        while(t=m/n)
        {m=n;
        n=t;        }
        return n;
}

void Fraction::tongfen(Fraction f1,Fraction f2)
{        int gongbei;
        gongbei=f1.mu*f2.mu/gongyue(f1.mu,f2.mu);
        f1.mu=f2.mu=gongbei;
        f1.zi=gongbei/f1.mu*f1.zi;
        f2.zi=gongbei/f2.mu*f2.zi;
        cout<<"通分之后2个分数分别的:"<<endl;
        display(f1);
        display(f2);
}


//建立一个分数类fraction。分数类的数据成员包括分子和分母。
int main()
{
        Fraction f1(1,3),f2(1,2);
        return 0;
}


建立一个简单的C++类。分子分母,然后求通分,公约数等功能。
总是提示:rror C2065: 'yuefen' : undeclared identifier
3 回复
#2
未未来2014-05-10 01:28
你这代码不只是一个问题吧,
你说的那个问题是,你对类还是不是很明白,yuefen 函数是Fraction类的成员函数,你要调用它必须是通过它的对象啊。
yufen函数在Fraction类是定义在public里面的 你没必要在声明友元了,,Fraction operator + (Fraction &f1,Fraction &f2)函数要调用它 要么创建一个Fraction 类的对象
比如
程序代码:
Fraction operator + (Fraction &f1,Fraction &f2)
{
        Fraction f3(0,1);
        f3.mu=f1.mu*f2.mu;
        f3.zi=f1.zi*f2.mu+f1.mu*f2.zi;
fraction f;
        f.yuefen(f3.zi,f3.mu);
        return f3;
};

不过你没必要把 yuefen函数设置为成员函数吧,放外面就可以
#3
未未来2014-05-10 01:40
唉,
fraction f;
我这样建立对象不行, 因为你定了构造函数,C++不再提供默认构造函数,不过你的程序想干嘛,我看不懂,还是建议你把函数拿出来。
#4
慢跑202014-05-11 21:21
回复 3 楼 未未来
原来如此呀,感谢啦。
我再修改一下。
1