控制命名空间中的访问

Control access in namespace?

本文关键字:访问 命名空间 控制      更新时间:2023-10-16

我编写了一个由主命名空间组成的静态库。如何控制对该名称空间中的类的访问?例如,如果我希望内部的所有类都是"私有的",并且只有少数接口函数是可访问的。什么好主意吗?我可以这样做吗?

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 {};
};