`

C++命名空间与头文件的关系

阅读更多

C++命名空间与头文件的关系:


(一)添加一个头文件demonamespace.h,内容如下

#ifndef DEMONAMESPACE_H_

#define DEMONAMESPACE_H_

 

class A

{

public:

    int value;

};

 

namespace mynp

{

    A ma;

}

 

#endif /* DEMONAMESPACE_H_ */

 

 

(二)主文件:

 

代码(1):

//只添加了头文件

#include "demonamespace.h"

 

int main() {

//很显然接下来的语句存在错误,解决方法是(1)修改为mynp::ma.value=2;(2)添加命名空间//mynp,即加上一行代码using namespace mynp;(可使用缩写方式using mynp)

    ma.value=2;

    return 0;

}

编译报错提示:'ma' was not declared in this scope

 

代码(2):

//只添加了命名空间

using namespace mynp;

 

int main() {

    ma.value=2;       //很显然,头文件都没有指明,编译器不会知道mynp的来源

    return 0;

}

编译报错提示:

expected nested-name-specifier before 'mynp'

'mynp' has not been declared

'ma' was not declared in this scope

 

//若在主文件中添加一个命名空间mynp,则可以调用mynp中内容,但该mynp不是头文件demonamespace.h中的mynp:

namespace mynp

{

    int i;

}

 

using namespace mynp;

int main() {

    i=2;

    return 0;

}

 

(三)添加另一个头文件secondnamespace.h,内容如下:

#ifndef SECONDNAMESPACE_H_

#define SECONDNAMESPACE_H_

 

class B

{

public:

    int value;

};

 

namespace mynp       //demonamespace.h中的mynp同名

{

    B mb;

}

 

#endif /* SECONDNAMESPACE_H_ */

 

主文件替换为:

#include "demonamespace.h"

#include "secondnamespace.h"

using namespace mynp;       //指明将两个头文件的mynp都添加进来

 

int main() {

    ma.value=2;

    mb.value=3;

    return 0;

}

 

同时将两个头文件中的mynp添加到了主文件

 

****************************************************************

(四)测试,对于#include<iostream>using namespace std;在主文件只添加其一,编译报错提示和(二)相同,经查资料,头文件iostrem中包含了一个namespace std;特别地头文件string中也有一个namespace std;当同时将iostreamstring添到同一文件,是允许的,此时的情形和()相同。

3
0
分享到:
评论

相关推荐

    C++快速学习,头文件与命名空间

    C++头文件与命名空间的介绍

    C++万能库头文件:一站式解决方案与深度解析.zip

    然而,在使用时也需要谨慎选择和使用,注意命名空间和依赖关系,以及进行必要的性能优化和调试。 随着C++编程技术的不断发展和完善,我们期待未来能够出现更多功能强大、易于使用的万能库头文件。同时,我们也希望...

    编程:C++命名空间的使用 学习心得

    c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件:

    利用命名空间来解决例程序名字冲突问题。

    利用命名空间来解决例程序名字冲突问题。 修改两个头文件,把在头文件中声明的类分别放在两个不同的命名空间中

    C++编程中的命名空间基本知识讲解

    )来访问成员,也可通过单个标识符的 using 声明 (using std::string) 或命名空间中所有标识符的 using 指令 (C++) (using namespace std;) 来访问成员。头文件中的代码应始终使用完全限定的命名空间名称。 下

    Http2 Implementation (C++).rar

    作为一个二手的.net程序员,你看到了C++头文件一定就犯迷糊了,这到底是个啥玩意。...对于我们.net程序员可以这么理解,头文件是相当于命名空间的定义,引入以后,就相当于引入命名空间。我们.net中直接是引入命名空间

    C++ 中的信号处理库_C++_代码_下载

    SP++ (Signal Processing in C++) 是一个关于信号处理与数值计算的开源C++程序库,该库提供了信号处理与...所有的函数和类均位于名字空间”splab”中,因此使用SP++时要进行命名空间声明:”using namespace splab”。

    DLL 导出名称空间

    该文档中有三个示例,分别讲述了如何从一个DLL中导出名称空间中的函数,名称空间中的类与名称空间中的全局...每一个示例包括头文件,C++文件,C++测试文件与makefile。该资源系本人所写,无积分下载,可以自由传播。

    C++简述小程序

    ” 的意思是“使用命名空间std”。C++标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C++标准库(此时就需要用#include命令行),就需要用“using namespace std; ”作声明,表示要用到命名空间std...

    c++实验报告

    打开命名空间std  void main 主函数 程序入口  { int age; 声明一个变量 age 20; 赋值语句 cout&lt;&lt;&quot;The age is: n&quot;; 输出一个字符串 cout&lt;&lt;age&lt;&lt;endl; 输出变量中的值 return 0...

    信息技术c++.docx

    //为变量名开辟内存空间,即命名空间 int main() //主函数 { cout!"; return 0; } 程序就是为实现特定目标或解决特定问题而用计算机语言编写的一系列指令序列。 计算机语言是计算机能识别的指令及其使用规则的集合...

    C++ Primer第四版【中文高清扫描版】.pdf

    17.2.6 重载与命名空间 612 17.2.7 命名空间与模板 614 17.3 多重继承与虚继承 614 17.3.1 多重继承 615 17.3.2 转换与多个基类 617 17.3.3 多重继承派生类的复制控制 619 17.3.4 多重继承下的类作用域 620 17.3.5 ...

    Visual C++开发经验技巧宝典(第1章)

    0046 利用命名空间解决命名冲突 17 0047 名称空间简单应用 18 0048 使用:: 运算符调用全局函数 18 0049 :: 使用命名空间的注意事项 18 1.6 继承 19 0050 两个类互为成员的声明 19 0051 为什么要避免...

    Google C++ 编码规范

    优点:命名空间提供了(可嵌套)命名轴线(name axis,译者注:将命名分割在不同命名空间内),当然,类也提供了(可嵌套)的命名轴线(译者注:将命名分割在不同类的作用域内)。 举例来说,两个不同项目的全局...

    C++程序设计-谭浩强

    //使用命名空间std int main( ) { cout″This is a C++ program.″; return 0; } 在运行时会在屏幕上输出以下一行信息: This is a C++ program. 用main代表―主函数‖的名字.每一个C++程序都必须有...

    SP++ 3.0(信号处理工具包)

    SP++ (Signal Processing in C++) 是一个关于信号处理与数值计算的开源C++程序库,该库提供了信号处理与...所有的函数和类均位于名字空间”splab”中,因此使用SP++时要进行命名空间声明:”using namespace splab”。

    C++程序设计彻底研究(是code不是书)

    16.4 使用“using指令”和“using声明”以存取命名空间的成员 16.5 标准命名空间 16.6 未命名的命名空间 16.7 常犯的错误 16.8 本章重点 16.9 本章练习 第17章 异常处理 17.1 异常及其特性 17.2 异常处理的...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    1.5 库与命名空间 24 1.5.1 库与include命令 24 1.5.2 命名空间 25 第2章 流程控制 30 2.1 布尔表达式 30 2.1.1 创建布尔表达式 30 2.1.2 布尔表达式求值 31 2.1.3 优先级原则 33 2.2 分支机制 37 2.2.1 ...

Global site tag (gtag.js) - Google Analytics