| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1445 人关注过本帖
标题:[求助]关于类的友元函数
只看楼主 加入收藏
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
 问题点数:0 回复次数:12 
[求助]关于类的友元函数
#include<iostream>
using namespace std;
class A
{
public:
void Display(){cout<<x<<endl;}
int GetX(){return x;}
friend void Set(int i);//声明为该类的友元函数
private:
int x;
};
class B
{
public:
void Set(int i);
private:
A a;
};
void B::Set(int i)
{
a.x=i;
}
void main()
{
B b;
A c;
b.Set(2);
c.Display();
}
想把void Set(int i)声明为类A的友元函数,但程序在编译时出现以下错误:
error C2248: 'x' : cannot access private member declared in class 'A'
本人不太懂,请问把一个类的成员函数声明为其他类的友元函数,应该怎样实现?......

搜索更多相关主题的帖子: 函数 
2006-05-25 22:12
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

你可以直接声明B为A的友元friend class B;
或者声明B的函数为A的友元friend void B::Set(int);


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-26 09:34
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
补充
class A {...
上要添加一类B的声明
class B;

2006-05-26 21:01
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

如果是添加friend class B;
就不用前向声明了


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-26 22:11
偶成
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-3-4
收藏
得分:0 
friend void B::Set(int i);//声明为该类的友元函数
这样声明在我的编译器上是错误的,是不是只是我编译器的问题?
错误 1 error C2653: 'B' : is not a class or namespace name

几年前,丢失了求知欲,游荡在游戏世界中. 而今寻找回了求知欲,希望通过自学充实自己.努力中...
2006-05-26 22:29
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
你要是加这个语句,就要前向声明class B;

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-26 22:35
偶成
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-3-4
收藏
得分:0 
如果是前向声明B,
class B
{
public:
void Set(int i);
private:
A a;
};
用A来定义a就是错误的啊.

几年前,丢失了求知欲,游荡在游戏世界中. 而今寻找回了求知欲,希望通过自学充实自己.努力中...
2006-05-27 09:02
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

晕,是前向声明,不是定义,只是一句class B;


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-27 09:23
偶成
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-3-4
收藏
得分:0 
我的编译上也不行的,你的编译器上能通过么?

几年前,丢失了求知欲,游荡在游戏世界中. 而今寻找回了求知欲,希望通过自学充实自己.努力中...
2006-05-27 09:33
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

没试, 只是告诉你前向声明的作用和方法


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-27 09:35
快速回复:[求助]关于类的友元函数
数据加载中...
 
   



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

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