我编写了一个由主要命名空间组成的静态库。如何控制对该命名空间中的类的访问?例如,如果我希望内部的所有类都是“私有”,并且只有少数接口函数可以访问。有任何想法吗?我可以这样做:
namespace{
public:
void startSomeProcess();
private:
// global variables
class Priv{};
}
答案 0 :(得分:4)
命名空间没有访问说明符,您不能这样做。
访问说明符仅适用于类/结构。
如果您不想公开某些类,请不要将它们放在您向用户公开的头文件中,如果用户看不到某个类,则他们将不会使用它。
“NmspPublic.h”与他人分享
namespace Nmsp {
void startSomeProcess();
}
“NmspPrivate.h”保持内部
#inlcude "NmspPublic.h"
namespace Nmsp {
class Priv{};
}
答案 1 :(得分:0)
将“私有”原型移出头文件并将函数声明为静态应该这样做。
答案 2 :(得分:0)
您不能在命名空间中放置访问说明符。你可以做的是在命名空间中创建一个类,并在类中放置静态方法。
class AccessControl {
public:
static void startSomeProcess();
private:
class Priv {};
};
并使用Priv中的朋友说明符来控制访问。