C++ 如何使 function/variable 局部于命名空间?

C++ How do I make a function/variable local to a namespace?

我想整洁地声明一个命名空间的局部函数和变量,这样只有命名空间成员才能访问它们。

在 lua 中,我会使用 "local" 关键字来执行此操作(在 file/function 中)。在 C++ 中有什么相关的可能吗?

编辑

这是我的代码的伪 C++ 示例:

namespace wld {
    const int wldDivis = 4;
    void myFunc(){
        // wldDivis constant used here
    }
    void myFunc2(){
        // wldDivis also used here
    }
}

// Somewhere later
wld::myFunc();
wld::myFunc2();

变量"wldDivis"只在命名空间wld中使用过。我如何将/"make it invisible" 本地化到外部命名空间 wld,作为 "enforced opacity" 如果其他人可能会破坏我的函数的内部工作?命名空间是否合适?

无法访问 IE 在命名空间之外?

在命名空间中声明的变量可以使用限定符从外部访问 (mynamespace::myvariable)。例如,这是您可以访问 std::cout 的方式。

可以通过 publicprivate 和 [=20= 在 classes 内控制访问]保护个关键字。

一个可能的(笨拙的)解决方法是将你的 "globals" 放在一个具有私人访问权限的 class 中,然后让这个 class friend 与名称空间中的其他 classes 和函数。这不仅是维护的噩梦,而且如果不是来自 friend.

,也将无法访问这些全局变量

另一方面,函数的巧妙声明(因此它们对命名空间中定义的 classes 进行操作并仅执行相关功能)将立即解决问题:一切都是可访问的,因为它需要所以。

当然,周围有更多经验丰富的编码人员,所以也许有人可以加入文件级可见性、"extern" 关键字等(我记得这些是旧 C 中的东西)。无论如何,您是否可以向我们提供您的代码示例以更好地了解该主题?

据我所知,在 C++ 的命名空间中没有访问限制。

namespace foo {
    void local_func() {}

    // local_func can be accessed inside the namespace

    void global_func() { local_func(); }
}

// ...

foo::local_func(); // local_func can be accessed outside the namespace

您可以在 class 定义中使用静态成员函数实现类似的功能:

class foo {
    private:
        static void local_func() {}

    public:
        // local_func can be accessed inside the "namespace" of the class

        void global_func() { local_func(); }
};

// ...

foo::local_func(); // error : local_func is private to the class