在c++中使命名空间私有
Make a namespace private in C++
考虑这种情况。我正在编写一个库,并希望在名称空间中包装我的数据。例如:
//header.h
#pragma once
namespace wrapper
{
// some interface functions here..
}
我想让我的命名空间私有。这样就没有人可以在里面写东西了。例如,我们总是可以这样写:
namespace std
{
// some data here..
}
所以我想防止最后一种情况。除了使用类包装的静态函数之外,还有什么技术可以做到这一点吗?
没有。总是可以添加命名空间,除非它是匿名命名空间。但是它们只能存在于单个编译单元中。
这不可能。如果以上方法都失败了,我还可以编辑你的头文件
命名空间不能被设为私有,命名空间没有访问控制(即类似于类)。即使不尝试编辑头文件,也可以将命名空间添加到。
替代品包括;
-
将数据放入cpp文件中,如果需要,仍然在名称空间中。因此,数据不是"私有的",但由于它不在报头中,因此对客户端也不是"可见的"。
-
这可能更好,但可能需要更多的努力;是利用"pimpl"(或私有类数据)习语对客户端"隐藏"类中的数据。
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 是否可以将函数导入命名空间,但不能导出它?
- C++ C++类中的命名空间降级
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 Clang++ 有没有办法将文件作为命名空间等包含?
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何通过命名空间调用非静态方法
- 在命名空间名称之前加上 :: 是什么意思?