C++可以在多个头文件中重复定义同一名称的命名空间吗?

问题描述

C++可以在多个头文件中重复定义同一名称的命名空间吗?

test_a.h中有定义:
namespace ns {
class a {...};
}
test_b.h中有定义:
namespace ns {
class b {...};
}
test_c.h中有定义:
namespace ns {
class c {...};
}
然后,在test_c.cpp中有如下代码片段:
#include "test_a.h"
#include "test_b.h"
#include "test_c.h"
using namespace ns;
对于命名空间是否会产生二义性?这样做的好处是什么?
(字体显示有问题,莫怪)

解决方案

这样就会合并多个命名空间 只要名称不相同冲突

解决方案二:

[初级]避免多个头文件重复定义的问题

解决方案三:

其实你可以合并到一个里面,那样写很累赘!

解决方案四:

你可以合并到一个里面

时间: 2024-10-04 08:15:36

C++可以在多个头文件中重复定义同一名称的命名空间吗?的相关文章

class-一个头文件中的类继承另一个头文件中的类,应该怎么写

问题描述 一个头文件中的类继承另一个头文件中的类,应该怎么写 如题,查了c++primer,也没有详细解释.提示如下错误 g++ -O2 main.cpp -lm -o main C:UsersTraeyeeAppDataLocalTempccgVqs5n.o:main.cpp:(.text.startup+0x13): undefined reference to `test2::show2()' collect2.exe: error: ld returned 1 exit status /

如何把一个头文件中定义的结构体用到另一个头文件中,另一个头文件中定义的结构体又用到改头文件中?

问题描述 如何把一个头文件中定义的结构体用到另一个头文件中,另一个头文件中定义的结构体又用到改头文件中? //栈的头文件声明 #include #include #include "Tree" #ifndef STACK_H #define STACK_H typedef union typelemt{ char ch; Tree t; }typelemt; typedef struct stack{ typelemt* type_stack; int max; }stack; typ

freemarker 的ftl文件中如何获取项目名称

问题描述 freemarker 的ftl文件中如何获取项目名称 就是如何把这个换掉 解决方案 <#assign contextPath = request.contextPath/>

java文件中可以定义多个类的话,为什么我这个程序编译不通过呢?求大侠

问题描述 public class TestBreak {public static void main(String[] args){int stop = 4;for(int i=0;i<10;i++) {if(i == stop)break;System.out.println(i);}}}class TestContinue {int temp = 4;for(int j=0;j<10;j++) {if(j == temp)continue;System.out.println(j);}

shell中删除文件中重复行的方法_linux shell

Linux下文本处理工具很丰富很强大,例如这样一个文件: 复制代码 代码如下: cat log www.jb51.net 192.168.1.1www.jb51.net 192.168.1.1www.jb51.net 192.168.1.2ffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeefffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeggggggggggggggg

ASPX文件中默认导入的名称空间

ASPX默认导入的名称空间可以直接引用了,使用其它的名称空间就的自行导入了. 默认名称空间  System  System.Collections  System.Collections.Specialized  System.Configuration  System.Text  System.Text.RegularExpressions  System.Web  System.Web.Caching  System.Web.Security  System.Web.Se

需要将声明和定义放在同一个头文件

1 内联函数 2 函数模板 3 类模板   包含模型 链接器错误: 大多数C和C++程序员会这样组织他们的非模板代码: 类和其他类型都被放在一个头文件中.通常而言,头文件是一个扩展名为.hpp(.h..hh)的文件. 对于全局变量和(非内联)函数,只有声明放在头文件中,定义则位于.c文件,通常而言,.c文件是指扩展名为.cpp(或者.C..c..cc..cxx)的文件. 这样一切都可以正常运作了.所需的类型定义在整个程序中都是可见的:并且对于变量和函数而言,链接器也不会给出重复定义的错误.  1

c语言中我重复定义了为什么编译器没报错了

问题描述 c语言中我重复定义了为什么编译器没报错了 在头文件和源文件中定义了相同的变量kk,但是编译的时候为什么没报错呢! 解决方案 C语言中重复定义的问题 解决方案二: 哪里显示出你重复定义了? int kk;//全局变量声明 int main(--) { kk = 2;//对kk进行定义 } 解决方案三: 你没有重复定义, 一个是全局变量一个是局部变量. 解决方案四: 因为有 ifndef 这个控制,会检查重复定义的,如果前面定义了就不会再定义一遍 解决方案五: 如果不是相互包含,那么问题不

第二条、在类的头文件中尽量少引入其他头文件

第二条.在类的头文件中尽量少引入其他头文件 当我们在一个类中去引入另一个类的时候,我们经常会这样使用: #import "xxxx.h" 这是一种常见的方法,但是不够优雅.举个例子.在Driver类中 Driver.h #import <Foundation/Foundation.h> @interface Driver : NSObject @property(nonatomic)NSString *name; @property(nonatomic)NSString *