控制命名空间中的访问
Control access in namespace?
我编写了一个由主命名空间组成的静态库。如何控制对该名称空间中的类的访问?例如,如果我希望内部的所有类都是"私有的",并且只有少数接口函数是可访问的。什么好主意吗?我可以这样做吗?
namespace{
public:
void startSomeProcess();
private:
// global variables
class Priv{};
}
名称空间没有访问说明符,您不能这样做。
访问说明符只适用于类/结构。
如果你不想公开某些类,不要把它们放在你公开给用户的头文件中,如果用户看不到一个类的存在,他们就不会使用它。
"NmspPublic.h"与他人分享
namespace Nmsp {
void startSomeProcess();
}
"NmspPrivate.h"内部保留
#inlcude "NmspPublic.h"
namespace Nmsp {
class Priv{};
}
将"private"原型从头文件中移出并将函数声明为静态应该可以做到这一点。
不能在命名空间中放置访问说明符。您可以做的是在命名空间中创建一个类,并在类中放置静态方法。
class AccessControl {
public:
static void startSomeProcess();
private:
class Priv {};
};
相关文章:
- VS2017 是否更改了 C++ 中访问 C# 命名空间的方式?
- 如何访问嵌套在命名命名空间中的未命名命名空间变量?
- C++使用其他命名空间中的符号,而不使它们可从外部访问
- 访问向量字段的键 - 枚举类还是命名空间中的枚举?
- 将typeID转换为静态成员访问(C )的命名空间
- 如何使客户端无法访问命名空间的函数
- 从另一个命名空间访问标准命名空间数据成员
- 如何访问其他 .cc 文件中命名空间中定义的函数
- 使用命名空间和模板类访问变量
- 从另一个命名空间中C++全局命名空间访问
- 限制字段突变/对命名空间的访问
- 为什么std::generate在没有命名空间限定符的情况下是可访问的
- 为什么我的类友元函数无法访问具有命名空间的受保护成员?
- C++ 中的匿名命名空间无法访问标头
- C++访问具有相同名称的变量/对象的命名空间中的全局变量/对象
- 为什么命名空间中的某些函数可以在没有命名空间范围前缀的情况下访问
- 添加命名空间会删除对类私有成员的好友访问权限
- 访问 C++ 中同一命名空间中的成员
- 正在尝试访问命名空间Ui中的类
- 如何使用Python ctypes访问c++命名空间和类