命名空间:using namespace 应用问题!求高手解答!

vn198651 2009-02-09 08:37:27
同学发给我个程序,由于对using namespace平时用得实在太少,看不出毛病,所以麻烦大家帮忙看看。

一共七个文件:3个头文件,4个源文件。

头文件一:10-1-1.h

namespace PrintThis
{
void PrintThis(const string& s);
}



头文件二:10-1-2.h

namespace PrintThat
{
void PrintThat(const string& s);
}


头文件三:10-1-3.h

namespace Print
{
void Print(const string& s);
}


源文件一: 10-1-0.cpp


#include<iostream>
#include"10-1-1.h"
#include"10-1-2.h"
#include"10-1-3.h"

using PrintThis::PrintThis;
using PrintThat::PrintThat;
using Print::Print;
using namespace std;
void main()
{
PrintThis();
PrintThat();
}


源文件二:10-1-1.cpp

#include"10-1-1.h"
using namespace PrintThis;
void PrintThis(const string& s)
{
using namespace std;
cout<<"Please input the string for PrintThis: ";
cin>>s;
using namespace Print;
Print(s);
}


源文件三:10-1-2.cpp

#include"10-1-2.h"
using namespace PrintThat;
void PrintThat(const string& s)
{
using namespace std;
cout<<"Please input the string for PrintThat: ";
cin>>s;
using namespace Print;
Print(s);
}


源文件四:10-1-3.cpp

#include"10-1-3.h"
using namespace Print;
void Print(const string& s)
{
std::cout<<s<<std::endl;
}


大家帮帮忙,我是初学者,命名空间这方面实在是盲区。
...全文
1596 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
悲催的老菜农 2009-02-10
  • 打赏
  • 举报
回复
他的意思好像是說:定義了多個命名空間,A,B,C,D...使用這些命名空間的經驗,或者說一般是怎么用的。樓主好像是這個意思吧
sagegz 2009-02-10
  • 打赏
  • 举报
回复
楼主用的是Ghost的系统盘?
1>d:\my documents\my qq files
cppfaq 2009-02-10
  • 打赏
  • 举报
回复
#include "abc.h"
会把abc.h的内容全部拷贝过去,楼主可以把#include 指令展开。能开出一些问题。

PS:
编码风格太有问题,建议你的朋友找个coding standard先看看
deerwin1986 2009-02-10
  • 打赏
  • 举报
回复
命名空间和函数的名字相同...比较严重...
编译器怎会知道你说的是哪个...
youdang45 2009-02-09
  • 打赏
  • 举报
回复
这段代码有N多的问题:

使用cout和cin,但没有#include <iostream>

使用string,但没有#include <string>

命名空间和空间中的成员名字相同,编译器把同样的名字识别为命名空间,而不是当作其中的成员

使用cin想cosnt string赋值

简单调了下,这些都改掉,编译能过,但正确的运行结果还得进一步改代码后才能得到
vn198651 2009-02-09
  • 打赏
  • 举报
回复
1>------ 已启动生成: 项目: LXJ'Problem, 配置: Debug Win32 ------
1>正在编译...
1>10-1-0.cpp
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-0.cpp(7) : error C2874: using 声明导致“PrintThis::PrintThis”的多次声明
1> d:\my documents\my qq files\10-1\10-1-1.h(4) : 参见“PrintThis::PrintThis”的声明
1>d:\my documents\my qq files\10-1\10-1-0.cpp(8) : error C2874: using 声明导致“PrintThat::PrintThat”的多次声明
1> d:\my documents\my qq files\10-1\10-1-2.h(4) : 参见“PrintThat::PrintThat”的声明
1>d:\my documents\my qq files\10-1\10-1-0.cpp(9) : error C2874: using 声明导致“Print::Print”的多次声明
1> d:\my documents\my qq files\10-1\10-1-3.h(4) : 参见“Print::Print”的声明
1>d:\my documents\my qq files\10-1\10-1-0.cpp(13) : error C2882: “PrintThis”: 在表达式中非法使用命名空间标识符
1>d:\my documents\my qq files\10-1\10-1-0.cpp(14) : error C2882: “PrintThat”: 在表达式中非法使用命名空间标识符
1>10-1-1.cpp
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-1.cpp(3) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-1.cpp(3) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-1.cpp(4) : error C2365: “PrintThis”: 重定义;以前的定义是“命名空间”
1>d:\my documents\my qq files\10-1\10-1-1.cpp(5) : error C2871: “std”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-1.cpp(6) : error C2065: “cout”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-1.cpp(7) : error C2065: “cin”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-1.cpp(7) : error C2065: “s”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-1.cpp(8) : error C2871: “Print”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-1.cpp(9) : error C3861: “Print”: 找不到标识符
1>10-1-2.cpp
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-2.cpp(3) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-2.cpp(3) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-2.cpp(4) : error C2365: “PrintThat”: 重定义;以前的定义是“命名空间”
1>d:\my documents\my qq files\10-1\10-1-2.cpp(5) : error C2871: “std”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-2.cpp(6) : error C2065: “cout”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-2.cpp(7) : error C2065: “cin”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-2.cpp(7) : error C2065: “s”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-2.cpp(8) : error C2871: “Print”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-2.cpp(9) : error C3861: “Print”: 找不到标识符
1>10-1-3.cpp
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-3.cpp(3) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-3.cpp(3) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-3.cpp(4) : error C2365: “Print”: 重定义;以前的定义是“命名空间”
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2653: “std”: 不是类或命名空间名称
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2065: “cout”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2065: “s”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2653: “std”: 不是类或命名空间名称
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2065: “endl”: 未声明的标识符
1>正在生成代码...
1>生成日志保存在“file://d:\My Documents\Visual Studio 2005\Projects\LXJ'Problem\LXJ'Problem\Debug\BuildLog.htm”
1>LXJ'Problem - 43 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========


这就是报得错误,一塌糊涂
vn198651 2009-02-09
  • 打赏
  • 举报
回复
这。。就是编译器报得错误。。


1>------ 已启动生成: 项目: LXJ'Problem, 配置: Debug Win32 ------
1>正在编译...
1>10-1-0.cpp
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-0.cpp(7) : error C2874: using 声明导致“PrintThis::PrintThis”的多次声明
1> d:\my documents\my qq files\10-1\10-1-1.h(4) : 参见“PrintThis::PrintThis”的声明
1>d:\my documents\my qq files\10-1\10-1-0.cpp(8) : error C2874: using 声明导致“PrintThat::PrintThat”的多次声明
1> d:\my documents\my qq files\10-1\10-1-2.h(4) : 参见“PrintThat::PrintThat”的声明
1>d:\my documents\my qq files\10-1\10-1-0.cpp(9) : error C2874: using 声明导致“Print::Print”的多次声明
1> d:\my documents\my qq files\10-1\10-1-3.h(4) : 参见“Print::Print”的声明
1>d:\my documents\my qq files\10-1\10-1-0.cpp(13) : error C2882: “PrintThis”: 在表达式中非法使用命名空间标识符
1>d:\my documents\my qq files\10-1\10-1-0.cpp(14) : error C2882: “PrintThat”: 在表达式中非法使用命名空间标识符
1>10-1-1.cpp
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-1.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-1.cpp(3) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-1.cpp(3) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-1.cpp(4) : error C2365: “PrintThis”: 重定义;以前的定义是“命名空间”
1>d:\my documents\my qq files\10-1\10-1-1.cpp(5) : error C2871: “std”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-1.cpp(6) : error C2065: “cout”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-1.cpp(7) : error C2065: “cin”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-1.cpp(7) : error C2065: “s”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-1.cpp(8) : error C2871: “Print”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-1.cpp(9) : error C3861: “Print”: 找不到标识符
1>10-1-2.cpp
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-2.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-2.cpp(3) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-2.cpp(3) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-2.cpp(4) : error C2365: “PrintThat”: 重定义;以前的定义是“命名空间”
1>d:\my documents\my qq files\10-1\10-1-2.cpp(5) : error C2871: “std”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-2.cpp(6) : error C2065: “cout”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-2.cpp(7) : error C2065: “cin”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-2.cpp(7) : error C2065: “s”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-2.cpp(8) : error C2871: “Print”: 具有该名称的命名空间不存在
1>d:\my documents\my qq files\10-1\10-1-2.cpp(9) : error C3861: “Print”: 找不到标识符
1>10-1-3.cpp
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-3.h(4) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-3.cpp(3) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\my documents\my qq files\10-1\10-1-3.cpp(3) : error C2143: 语法错误 : 缺少“,”(在“&”的前面)
1>d:\my documents\my qq files\10-1\10-1-3.cpp(4) : error C2365: “Print”: 重定义;以前的定义是“命名空间”
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2653: “std”: 不是类或命名空间名称
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2065: “cout”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2065: “s”: 未声明的标识符
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2653: “std”: 不是类或命名空间名称
1>d:\my documents\my qq files\10-1\10-1-3.cpp(5) : error C2065: “endl”: 未声明的标识符
1>正在生成代码...
1>生成日志保存在“file://d:\My Documents\Visual Studio 2005\Projects\LXJ'Problem\LXJ'Problem\Debug\BuildLog.htm”
1>LXJ'Problem - 43 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
artwl_cn 2009-02-09
  • 打赏
  • 举报
回复
编译的时候报什么错了?
waizqfor 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 vn198651 的帖子:]
同学发给我个程序,由于对using namespace平时用得实在太少,看不出毛病,所以麻烦大家帮忙看看。

一共七个文件:3个头文件,4个源文件。

头文件一:10-1-1.h

C/C++ code
namespace PrintThis
{
void PrintThis(const string& s);
}





头文件二:10-1-2.h

C/C++ code
namespace PrintThat
{
void PrintThat(const string& s);
}




头文件三:10-1-3.h

C/C++ code
namespace Prin…
[/Quote]
编译的时候报什么错了? 发出来看看
hellodudu 2009-02-09
  • 打赏
  • 举报
回复
一些cpp里面用到了cout cin 但using namespace std;却在那些头文件之后
可能编译会报错吧
HelloDan 2009-02-09
  • 打赏
  • 举报
回复
什么问题啊?

65,210

社区成员

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

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