在C++中使命名空间成为私有的

Edu*_*yan 5 c++ namespaces private wrapper

考虑这种情况.我正在编写一个库,并希望将我的数据包装在命名空间中.例如:

//header.h
#pragma once

namespace wrapper
{
    // some interface functions here..
}
Run Code Online (Sandbox Code Playgroud)

我想让我的命名空间变得私密.所以没有人可以写任何东西.例如,我们总是可以写这样的东西.

namespace std
{
    // some data here..
}
Run Code Online (Sandbox Code Playgroud)

所以我想防止最后一种情况.除了使用包含在类中的静态函数之外,还有什么技术可以做到吗?

Bat*_*eba 7

不,没有.除非是匿名命名空间,否则始终可以添加命名空间.但它们只能存在于一个编译单元中.


Osw*_*ald 5

这不可能。如果一切都失败了,我可以随时编辑你的头文件。

  • 我不明白其中的道理。是什么阻止您编辑他的源文件,按照您想要的方式更改所有内容。 (2认同)