| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1068 人关注过本帖
标题:C++ 类,约分函数没有声明?
只看楼主 加入收藏
慢跑20
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-4-23
结帖率:0
收藏
 问题点数:0 回复次数:3 
C++ 类,约分函数没有声明?
#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
搜索更多相关主题的帖子: display include public friend 
2014-05-08 16:17
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
收藏
得分:0 
你这代码不只是一个问题吧,
你说的那个问题是,你对类还是不是很明白,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函数设置为成员函数吧,放外面就可以
2014-05-10 01:28
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
收藏
得分:0 
唉,
fraction f;
我这样建立对象不行, 因为你定了构造函数,C++不再提供默认构造函数,不过你的程序想干嘛,我看不懂,还是建议你把函数拿出来。
2014-05-10 01:40
慢跑20
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-4-23
收藏
得分:0 
回复 3 楼 未未来
原来如此呀,感谢啦。
我再修改一下。
2014-05-11 21:21
快速回复:C++ 类,约分函数没有声明?
数据加载中...
 
   



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

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