友元函数必须定义在类声明中么?

Baesky 2011-06-16 09:28:28
我在类实现的CPP里实现友元函数,在类的声明.H文件里声明友元
VS2005 编译器不认,是编译器bug还是语法规定?
...全文
684 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
碎碎念 2011-06-16
  • 打赏
  • 举报
回复
友元函数在类的内部声明,可以是全局函数,也可是类的成员函数...
Baesky 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zicheng_lin 的回复:]

还有有 友元声明不等于 函数声明,你应在在.h文件里,类外对函数声明一次
[/Quote]
兄弟说的对
其实应该是
.h
class a
{
type1 sss;
type2 ddd;
void ttt();
firend void kkk();
};
void kkk();
zicheng_lin 2011-06-16
  • 打赏
  • 举报
回复
还有有 友元声明不等于 函数声明,你应在在.h文件里,类外对函数声明一次
  • 打赏
  • 举报
回复
kkk()
{
ttt();
}
还是放详细代码吧,你这样子我会觉得没void,之类
zicheng_lin 2011-06-16
  • 打赏
  • 举报
回复
在类的 定义里声明就可以了
Baesky 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dizuo 的回复:]

是不是模板函数?
类内部申明,定义内外都可以,
[/Quote]
内外是指类体本身的内外 还是一个头文件,一个实现代码文件?
Baesky 2011-06-16
  • 打赏
  • 举报
回复
c.h
class a
{
type1 sss;
type2 ddd;
void ttt();
firend void kkk();
};
c.cpp
a::ttt()
{...}

kkk()
{
ttt();
}

编译不过。
至善者善之敌 2011-06-16
  • 打赏
  • 举报
回复
放代码
淡蓝 2011-06-16
  • 打赏
  • 举报
回复
友元函数并非类的成员函数,定义的时候不能加类作用域的
ryfdizuo 2011-06-16
  • 打赏
  • 举报
回复
是不是模板函数?
类内部申明,定义内外都可以,

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧