请教大家一个友元与名空间的问题~~~~

ljq14 2005-06-15 09:33:07
我在使用重载"<<"的友元函数时,把函数原型写在某类中,函数定义写在对应的cpp文件中,在类定义的文件中,使用名空间std时,就会出现错误,说ostream是不确定的符号,不知道名空间与友元之间是出了什么问题,原理不太清楚,请知道的朋友帮忙详细讲一下,谢谢了~~~~
...全文
120 10 打赏 收藏 转发到动态 举报
写回复
用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;
}

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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