如何让下面的代码工作?
int main(){
bool flag = true;
if(flag){
// note that I donot want to define variable globally.
int a = 5;
}
if(flag){
// but I still want to use this local variable within the same condition.
a++;
}
}
注意我不想全局定义这个变量或者使用一个静态变量,我很好奇c++是否有一种方法可以让局部变量在相同条件下在所有区域都可用?
4条答案
按热度按时间f2uvfpb91#
你所要求的是一个局部变量,而不是一个局部变量,这是不可能的。
另一方面,你基本上想要的是数据+代码,这就是一个类。如果你把它 Package 在一个类中,你的函数可能看起来像这样:
这个类可以是
fgw7neuy2#
你直接请求的东西是不可能的。你必须预先声明一些东西。如果它是关于在你有一些相关细节之前避免构造对象的,你可以使用
std::optional
8xiog9wr3#
您可以将变量的作用域设置为所需的作用域。
a0x5cqrl4#
没有。
根据section 6.4.3, basic.scope.block:
各1件
引入包含该语句或处理程序的块范围。
属于块作用域的变量是块变量。
根据www.example.com、www.example.com第1条: 6.7.5.4 , basic.stc.auto , clause 1:
属于块或参数作用域的变量,并且没有显式声明为static、thread_local或extern,则有自动存储期限。这些实体的存储将持续到创建它们的块退出。