我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

minmin





性别: 美女 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 615
威望: 0
浮云: 1229
在线等级:
注册时间: 2007-09-16
最后登陆: 2008-06-30

5come5帮你背单词 [ hello /'hə'ləu/ int. 喂!你好!(hello=hullo) ]


友元函数

书上不是说友元函数可以访问类的私有成员嘛..可是我的程序为什么出错了...denom,numer是类的私有成员
friend ostream & operator << (ostream & out,const Rational & value){
    if(value.denom!=0){
        out<<value.numer;
        if(value.denom!=1){
            out<<'/'<<value.denom;
            return out;
        }

        if(value.numer==0)
            out<<"indeterminate";
        else{
            if(value.numer<=0)
                out<<'-';
            out<<"infinity";
        }
        return out;
    }
}



error C2248: 'denom' : cannot access private member declared in class 'Rational'
        e:\programmer\visual c++\rationals\rational.h(20) : see declaration of 'denom'
E:\programmer\Visual C++\Rationals\Rational.cpp(94) : error C2248: 'numer' : cannot access private member declared in class 'Rational'
        e:\programmer\visual c++\rationals\rational.h(19) : see declaration of 'numer'
E:\programmer\Visual C++\Rationals\Rational.cpp(95) : error C2248: 'denom' : cannot access private member declared in class 'Rational'
        e:\programmer\visual c++\rationals\rational.h(20) : see declaration of 'denom'
E:\programmer\Visual C++\Rationals\Rational.cpp(96) : error C2248: 'denom' : cannot access private member declared in class 'Rational'
        e:\programmer\visual c++\rationals\rational.h(20) : see declaration of 'denom'
E:\programmer\Visual C++\Rationals\Rational.cpp(100) : error C2248: 'numer' : cannot access private member declared in class 'Rational'
        e:\programmer\visual c++\rationals\rational.h(19) : see declaration of 'numer'
E:\programmer\Visual C++\Rationals\Rational.cpp(103) : error C2248: 'numer' : cannot access private member declared in class 'Rational'
        e:\programmer\visual c++\rationals\rational.h(19) : see declaration of 'numer'
Error executing cl.exe.
顶端 Posted: 2008-04-17 21:02 | [楼 主]
xys1985



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 122
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-10-03
最后登陆: 2010-06-13

5come5帮你背单词 [ dot /dot/ n. 点,小数点;vt. 打点于,点缀,敲打 ]


我记得友元函数基本上是在类的内部声明,而在外部定义的普通函数见多..
顶端 Posted: 2008-04-17 21:10 | [1 楼]
wangfan





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 915
威望: 0
浮云: 1147
在线等级:
注册时间: 2007-09-10
最后登陆: 2010-05-25

5come5帮你背单词 [ sideway // ad. & a. 斜向一边(的),侧身(的) ]


好象你没申明类啊
不是很懂,机电学院的飘过
顶端 Posted: 2008-04-17 21:40 | [2 楼]
枫叶刀





性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1393
威望: 0
浮云: 1282
在线等级:
注册时间: 2006-03-23
最后登陆: 2009-08-14

5come5帮你背单词 [ retire /ri'taiə/ vi. 退休,退职,退下,离开,隐居,隐退 ]



友元不是在外部定义的!
要在类内部声明友元函数,在外面定义该全局函数!
看c++的书吧
顶端 Posted: 2008-04-18 12:51 | [3 楼]
小树



性别: 美女 状态: 该用户目前不在线
等级: 品行端正
发贴: 246
威望: 0
浮云: 1139
在线等级:
注册时间: 2007-10-02
最后登陆: 2009-10-15

5come5帮你背单词 [ thing /θiŋ/ n. 物,东西,事情,问题,(pl.)所有物,用品,(pl.)情况,事态 ]


在类里申明友元,不是在外面 申明
顶端 Posted: 2008-04-18 13:03 | [4 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.009687(s) query 5, Time now is:11-01 07:08, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号