在一个类中声明一个没有定义过的友元类

f_x_p0324 2011-11-02 05:16:49
#include <iostream>
#include <stdlib.h>

class Screen{
friend class widows;

public :
Screen() {}
~Screen() {}

private:
int m;
void set();
};

int main()
{
Screen me;
std::cout << "ffffff" <<endl;
}

在Screen中的那个friend class widows; 这个类windows没有声明,更无定义,奇了怪,书上说的是定义友元类的时候必须这个友元类要提前声明定义.但是我没有定义 程序也照样通过了. 我不理解,难道这样设计的目的是为了更好的拓展Screen这个类的接口吗?比如在当初实现这个类的时候没有把所有的功能设计好,为了将来能继续提供接口补充,留一个这样的友源类做补充用吗?
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2011-11-02
  • 打赏
  • 举报
回复
只是声明了一个友元类而已。而友元类是否定义了,则无所谓。
relaxisland 2011-11-02
  • 打赏
  • 举报
回复
把类设为友元的时候,不需要定义类。 友元类声明本身就是一个声明。

但是如果想把类的某个成员函数 声明为友元函数, 则必须先定义为类,
不然不知道这个成员函数是来自怎样的类。
f_x_p0324 2011-11-02
  • 打赏
  • 举报
回复
是没用过的,我在声明友元类的时候这个windows起码也得是一个类型呀,要不然随便的就能声明一个东西,岂不感觉有点乱了吗?
测试NULL 2011-11-02
  • 打赏
  • 举报
回复
那是因为你的类中没有用过windows类


#include <iostream>
#include <stdlib.h>
using namespace std;

class Screen
{
friend class windows;

public :
Screen() {}
~Screen() {}

private:
int m;
void set();
windows w; //这里肯定报错
};

int main()
{
Screen me;
std::cout << "ffffff" <<endl;
return 0;
}

64,654

社区成员

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

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