有没有办法禁用对某个范围内变量的所有访问?
它的用法可能类似于: -
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)
如果答案是否定的,那么是否有最接近这个特征的功能?
在一些调试情况下它会很有用.
编辑:例如,我确信某个范围(也是一个独特的函数)永远不应该访问单个特定变量.
考虑实现这样的东西(可能有删除的拷贝构造函数和赋值运算符):
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评论的那样,它可能会导致与阴影相关的编译器警告(反过来,通常可以根据具体情况禁用).
归档时间: |
|
查看次数: |
96 次 |
最近记录: |