C++命名空间和头文件

2024-10-31 08:18:27
有5个网友回答
网友(1):

这个问题我很清楚:
我们的课本上写的有(《面向对象程序设计》武汉理工大学出版社 闵联营 主编)
是这样的,首先,以下写法从C++语法角度分析是正确的(在gcc等编译器下编译通过)
#include
using namespace std;
......
class Date{
friend ostream & operator<<(ostream& out,Date s);
};
......

但是为什么在VC++6.0上编译不通过呢?

我们的教科书上是这样写的:因为旧的VC++6.0中的不带.h的头文件iostream没有完全实现C++的标准,这个友员就是它没有实现的内容之一,所以无法编译通过。但VC++6.0中带.h的头文件iostream.h却实现了。
这是编译器的问题,你的程序是正确的。

解决办法:
去微软官方网站下载VS6.0 SP6安装。你用的VC++6.0是盗版的吗?注意,很多盗版的VC++6.0称已经打了SP6补丁,其实是假的。我遇到过这种例子,我当时去微软官方网站下载sp5 sp6 依次安装后,就可以了。

网友(2):

#include
#include
就可以了。 在C++ 6.0里,很少用命名空间。

网友(3):

代码贴出来看看。。

网友(4):

一楼说的对!

网友(5):

在有的编译器中不能在同时包含头文件iostream.h和string.h的时候使用Using namespace std;
这样会出现重复包含头文件的错误的提示。
但是要实现上述的功能,只需要将#include换成#include就可以了,剩下的就不要改动了!!
这样就可以通过编译了!!

或者采用下面这种方法:
去掉语句Using namespace std;
在每次使用标准库中的std命名空间的内容的时候就在前面加上ios::就可以了。
这样也可以实现上面的要求!!
你可以自己试一试!!