| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1009 人关注过本帖
标题:友元函数问题
只看楼主 加入收藏
bibingyan
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:123
专家分:0
注 册:2008-3-16
收藏
 问题点数:0 回复次数:12 
友元函数问题
友元函数不能访问类的私有变量是怎么回事啊?    帮忙分析下原因
搜索更多相关主题的帖子: 函数 
2008-05-12 19:36
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
可以

学习需要安静。。海盗要重新来过。。
2008-05-12 19:36
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
但是6.0对友员支持不好..你要用命名空间隔忾

学习需要安静。。海盗要重新来过。。
2008-05-12 19:37
bibingyan
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:123
专家分:0
注 册:2008-3-16
收藏
得分:0 
要全部贴出来吗?
2008-05-12 19:38
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
恩..贴出来看看啊

学习需要安静。。海盗要重新来过。。
2008-05-12 19:39
bibingyan
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:123
专家分:0
注 册:2008-3-16
收藏
得分:0 
是用命名空间,我是初学者,还在试;
2008-05-12 19:39
bibingyan
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:123
专家分:0
注 册:2008-3-16
收藏
得分:0 
头文件 friends.h
#ifndef FRIENDF
#define FRIENDF
namespace friends
{
    class Box
    {
    public:
        Box(double rlength=1.0,double rwidth=1.0,double rheight=1.0);
        ~Box();
        void Show();
        //friend double BoxSurface(const Box& other1,const Box& other2);
        friend double BoxSurface(const Box& other1);
    private:
        double length;
        double width;
        double height;
    };
}
#endif
定义文件:
friends.cpp
#include<iostream>
#include"friends.h"
using namespace std;
using namespace friends;
Box::Box(double rlength,double rwidth,double rheight):length(rlength),width(rwidth),height(rheight){}
Box::~Box()
{
    cout<<"析构"<<endl;
}
void Box::Show()
{
    cout<<"长:"<<length<<endl
        <<"宽:"<<width<<endl
        <<"高;"<<height<<endl;

}
主文件:
#include<iostream>
#include"friends.h"
using namespace std;
using namespace friends;

int main()
{
    Box aa(10.0,20.0,30.0);
    aa.Show();
    Box bb(40.0,50.0,60.0);
    bb.Show();
    cout<<"两高: "<<BoxSurface(aa)<<endl;
    return 0;
}
double BoxSurface(const Box& other1)
{
    return  other1.height+other1.width+other1.length;
}
2008-05-12 19:42
bibingyan
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:123
专家分:0
注 册:2008-3-16
收藏
得分:0 
我在线等着啊...谢谢你的帮忙呢.
2008-05-12 19:45
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include<iostream>
using namespace std;
namespace a{
class demo
{
private:
     static int i;
     int j;
public:
    demo():j(0){};
    friend ostream& operator<<(ostream & ,demo &);
};
int demo::i=0;
ostream& operator<<(ostream & os,demo &a)
{
    os<<a.j<<endl;
    return os;
}
}
int main(void)
{
    a::demo d;
    cout<<d;
    return 0;
}

学习需要安静。。海盗要重新来过。。
2008-05-12 19:49
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#ifndef FRIENDF
#define FRIENDF
namespace friends
{
    class Box
    {
    public:
        Box(double rlength=1.0,double rwidth=1.0,double rheight=1.0);
        ~Box();
        void Show();
        //friend double BoxSurface(const Box& other1,const Box& other2);
        friend double BoxSurface(const Box& other1);
    private:
        double length;
        double width;
        double height;
    };
}
#endif
#include<iostream>
#include"friends.h"
using namespace std;
//using namespace friends;
friends::Box::Box(double rlength,double rwidth,double rheight):length(rlength),width(rwidth),height(rheight){}
friends::Box::~Box()
{
    cout<<"析构"<<endl;
}
void friends::Box::Show()
{
    cout<<"长:"<<length<<endl
        <<"宽:"<<width<<endl
        <<"高;"<<height<<endl;

}
#include<iostream>
#include"friends.h"
using namespace std;
using namespace friends;

int main()
{
    Box aa(10.0,20.0,30.0);
    aa.Show();
    Box bb(40.0,50.0,60.0);
    bb.Show();
    cout<<"两高: "<<BoxSurface(aa)<<endl;
    return 0;
}
double friends::BoxSurface(const Box& other1)
{
    return  other1.height+other1.width+other1.length;
}

学习需要安静。。海盗要重新来过。。
2008-05-12 19:55
快速回复:友元函数问题
数据加载中...
 
   



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

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