社区
非技术区
帖子详情
请教大家一个友元与名空间的问题~~~~
ljq14
2005-06-15 09:33:07
我在使用重载"<<"的友元函数时,把函数原型写在某类中,函数定义写在对应的cpp文件中,在类定义的文件中,使用名空间std时,就会出现错误,说ostream是不确定的符号,不知道名空间与友元之间是出了什么问题,原理不太清楚,请知道的朋友帮忙详细讲一下,谢谢了~~~~
...全文
184
10
打赏
收藏
请教大家一个友元与名空间的问题~~~~
我在使用重载"<<"的友元函数时,把函数原型写在某类中,函数定义写在对应的cpp文件中,在类定义的文件中,使用名空间std时,就会出现错误,说ostream是不确定的符号,不知道名空间与友元之间是出了什么问题,原理不太清楚,请知道的朋友帮忙详细讲一下,谢谢了~~~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ljq14
2005-06-20
打赏
举报
回复
我的VC6是这样的,我写了两个类,每个都有自己的重载友元,方式是一样的,在文件中的位置也一样,可是一个有问题,一个没问题,在一个类对应的cpp文件中,使用std名空间了,但是它竟然说cout和cin都是不明确的符号,是编译器问题???
那我重装再看看,谢谢大家了~~
xjp6688
2005-06-20
打赏
举报
回复
用GCC,没什么问题,可能你编译器有问题!
-------------------------------
#include <iostream>
#include <stdlib.h>
using namespace std;
class xx{
public:
xx(int a = 0) : m_a(a) {}
public:
friend std::ostream& operator<<(std::ostream&, const xx& c);
private:
int m_a;
};
std::ostream& operator<<(std::ostream& os, const xx& c)
{
os << c.m_a;
return os;
}
int main()
{
xx x(10);
std::cout << x << std::endl;
system("pause");
return 0;
}
foochow
2005-06-19
打赏
举报
回复
应该是你的代码问题
jinzita177
2005-06-19
打赏
举报
回复
你把定义也写在类中看一看。我的编译器是visual studio.Net 2003,没有出现你那个问题
mostideal
2005-06-19
打赏
举报
回复
有些是编译器的支持问题。。
ljq14
2005-06-19
打赏
举报
回复
我就是加了
using namespace std;
它还是说是不确定的符号
请问是编译器问题吗?
我一开始就想问这个......
lw1a2
2005-06-16
打赏
举报
回复
using namespace std;
ljq14
2005-06-16
打赏
举报
回复
我有好多个 cout 那不是要加很多的名空间??
不是很麻烦???
llmsn
2005-06-16
打赏
举报
回复
是啊,名字空间有好多种表示法,还可以取个别名.不过最推荐的还是一楼说的那种用法,这样可以减少命名冲突.
boxban
2005-06-15
打赏
举报
回复
//xx.h
#include <iostream>
class xx{
public:
xx(int a = 0) : m_a(a) {}
public:
friend std::ostream& operator<<(std::ostream&, const xx& c);
private:
int m_a;
};
//xx.cpp
#include "xx.h"
std::ostream& operator<<(std::ostream& os, const xx& c)
{
os << c.m_a;
return os;
}
void main()
{
xx x(10);
std::cout << x << std::endl;
}
友元
的创建和使用(普通函数做
友元
,成员函数做
友元
,类做
友元
)
友元
的作用:允许让
友元
类(
友元
函数)访问自己的私有属性
友元
的创建方式:在类的声明(函数的声明)前面加上
友元
关键字friend,放在允许被访问私有属性的类的里面(不受访问权限限制,随便放,只不过一般我们放在类的最上面)。 一、全局函数做类的
友元
函数 class Building { friend void visit1(Building building);//visit1函数在类里面被声明为
友元
类 friend void visit2(Building& building);//visit2函
【C++】
友元
--最全解析(
友元
是什么?我们应该如何理解
友元
?
友元
可以应用在那些场景?)
在C++编程语言中,
友元
函数(Friend Function)是一种特殊的函数,具有访问类中私有成员和保护成员的权限,尽管它不是类的成员函数。
友元
函数的存在使得类的设计更加灵活,能够在需要时授予外部函数访问类的私有成员的能力。本文将详细介绍C++中的
友元
函数,包括其定义、使用场景、优缺点以及示例。
友元
与重载运算符
由C++提供的
一个
对字符串操作的类所需头文件为string语法string 变量
名
= 值;
友元
——全局函数作
友元
、类作
友元
、成员函数作
友元
友元
——全局函数作
友元
、类作
友元
、成员函数作
友元
C++继承三难:
友元
、静态与菱形陷阱
摘要:本文深入探讨C++继承中三个特殊场景:
友元
、静态成员与菱形继承。
友元
关系不可继承的本质在于其权限授予特性与继承传递性的矛盾;静态成员作为类级资源在继承中表现为访问权传递而非实例复制;菱形继承通过虚基表指针和偏移量机制解决数据冗余和二义性
问题
。文章从底层实现(如内存布局、虚基表)和编译器行为角度解析核心机制,并给出常见
问题
的解决方案,帮助开发者理解这些特殊场景的设计原理与优化方向。(148字)
非技术区
15,446
社区成员
58,112
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章