如果满足“ if语句”,则创建一个常量变量

时间:2019-09-23 09:00:05

标签: c++ if-statement constants

我想知道我们是否可以在if语句中创建一个常量变量。因此该变量从那时开始在程序中存在。

例如:

if (true)  //this statement happens ONLY ONCE
{
      const variable = x;
}

1 个答案:

答案 0 :(得分:4)

主要问题是您不能直接引用if主体之外的变量。

简单的解决方法是在外部范围中将您类型的指针默认设置为nullptr,然后在static中使用thread_localif,并将外部作用域指针设置为:

Foo* f = nullptr;
if (/*condition*/){
      static Foo foo;
      f = &foo;
}

您可以根据需要设置类型const。另一种方法是使用std::variantstd::optional

但是,如果您要实现某种手段来使一段代码仅运行一次,则标准的使用方法是使用

std::once_flag flag; 
std::call_once(flag, []{/* ToDo - code here */});