使变量在某个范围内无法访问,可能吗?

jav*_*ver 3 c++ scope

有没有办法禁用对某个范围内变量的所有访问?

它的用法可能类似于: -

int outerOnly=5; //primitive or class or struct, it can also be a field
outerOnly=4;  //ok
{//vvv The disable command may be in a block?
    disable outerOnly; //<--- I want some thing like this.
    outerOnly=4; //should compile error (may be assert fail?)
    int c=outerOnly;  //should compile error
}
outerOnly=4;  //ok
Run Code Online (Sandbox Code Playgroud)

如果答案是否定的,那么是否有最接近这个特征的功能?

在一些调试情况下它会很有用.
编辑:例如,我确信某个范围(也是一个独特的函数)永远不应该访问单个特定变量.

Ale*_*exD 6

考虑实现这样的东西(可能有删除的拷贝构造函数和赋值运算符):

struct disable
{
private:
    disable(const disable&) = delete;
    disable& operator=(const disable&) = delete;
public:
    disable() {}
};
Run Code Online (Sandbox Code Playgroud)

然后,放置

disable outerOnly;
Run Code Online (Sandbox Code Playgroud)

在内部范围内部将导致所需的错误.

但请记住,正如@Cornstalks评论的那样,它可能会导致与阴影相关的编译器警告(反过来,通常可以根据具体情况禁用).

  • 请注意,这可能会导致带有阴影定义的警告,具体取决于您的编译器设置. (2认同)