从嵌套块的预期块访问变量
accessing variables from an intended block of nested blocks
在下面的程序中,如何从Block A中检索Block C中的aa值?只能使用作用域解析操作符访问最外层的全局aa。
solutoins:1. 在不同的块中使用不同的指针2. 在使用当前块的变量
之前,先使用父块中的变量我正在寻找任何其他替代解决方案
我知道这不是好的代码。只是想知道如何实现它。
#include <iostream>
#include <cstdio>
using namespace std;
// Global
int aa = 10;
int main()
{
// Main
int aa = 20;
{
// Block A
int aa = 30;
{
// Block B
int aa = 40;
{
// Block C
int aa = 50;
cout << "block C " << aa << endl;
cout << "block A " << ????? << endl;
cout << "global" << ::aa << endl;
}
cout << "block B " << aa << endl;
}
cout << "block A " << aa << endl;
}
cout << "main " << aa << endl;
return 0;
}
我知道这不是好的代码。只是想知道如何实现它。
你不能。
未修饰的使用变量aa
将使用最近作用域中的变量。
对变量::aa
的修饰使用将使用函数外部作用域中的变量。
对变量<NS>::aa
的修饰使用将使用名称空间<NS>
范围内的变量。
使用引用
// Block A int aa = 30; auto& ref_aa = aa; { // Block B int aa = 40; { // Block C int aa = 50; cout << "block C " << aa << endl; cout << "block A " << ref_aa << endl; cout << "global" << ::aa << endl; } cout << "block B " << aa << endl; }
当然,这是毫无意义的;如果您可以修改代码,那么只需更改变量名,或者重构它,以便需要更少的块(例如,使用更多的函数)。
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 通过按地址访问变量
- 通过 get-Method 访问变量在类外不起作用
- 是否可以使用指针访问变量以避免直接编辑变量?
- 我无法访问变量的值,即使我通过范围传递了它
- 简单的问题 - 如何从单独的"结构"内的'class'访问变量?
- (C++) 从另一个类访问变量时值无效
- 返回实例变量的c++方法可以访问变量中的数据,但不能更改它,但在编译时不会生成错误
- 是否可以从字符串访问变量?
- 变量 z 无法从其他函数访问变量 x
- 如何在 C++ 中从 void 返回函数访问变量
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 在C 中本地声明隐藏的封闭范围(而非全局)中访问变量
- 从函数中删除动态内存分配,但无法访问变量
- 如何从派生类中的基类访问变量的值?
- 如何通过指针更快地访问变量,然后直接访问变量?
- 如何在公共类 c++ 中访问变量的值
- 从 Visual Studio 中的多个源文件访问变量
- 使用命名空间和模板类访问变量
- 从子对话框访问变量