C++自己写的头文件无法用cout

自己写了一个头文件,就是一个类的定义,主文件里就是main函数。我在主文件里已经有#include<iostream>和usingnamespacestd;了,为什么头文... 自己写了一个头文件,就是一个类的定义,主文件里就是main函数。我在主文件里已经有#include <iostream>和using namespace std;了,为什么头文件里没有预编译就无法通过,都是说cout没有被声明? 展开
 我来答
JINLegend
推荐于2017-11-25 · TA获得超过802个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:126万
展开全部
楼上解释的基本没问题,但我这里想强调一点,你是否把类的定义都写在了头文件?如果是,非常不推荐。头文件尽量只有类和函数、全局变量的声明,而其定义应该定义在.cpp/.c源文件里,这样头文件就不必加#include<iostream>之类的东东。
之所以推荐声明与定义分离,是保证万一你写的类被多个文件使用,则会导致同一个类被多次编译而链接出错。所以,一个类或函数跨文件调用,应当声明与定义分离,除非你使用了模板。
yuantailing
2013-07-15 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:659万
展开全部
是头文件里的cout没有被声明?
那就头文件里加上#include <iostream>,所有cout改为std::cout。

P.S.虽然头文件里也可以用using namespace std;,但极不推荐这么做。
追问
为什么不推荐用using namespace std;?

而且头文件不是都被包含在主文件里了吗,为什么还要在包含这些预处理命令?
追答
因为头文件是用来给大家用的,是你设计一大堆函数、类库的接口。如果在头文件里using namespace std;,那么就会使所有包含你头文件的源文件都使用std名字空间,你不能保证每个人都希望使用std名字空间。如果头文件里使用了更多的名字空间,后果就更严重,开发工程的时候都这么做,可能导致严重的重名。况且名字空间只能using(开始使用),没有unusing(停止使用)

头文件里#include 最好加上吧,若不加上,你至少要保证头文件包含在标准库包含之后,而且即使这样也不一定对。头文件是用来提供编译所需信息的,并不一定在每个源文件里展开,否则展开后每个源文件非常巨大,编译缓慢。因此最好让每个头文件独立地看起来正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式