我想知道我们是否可以在if语句中创建一个常量变量。因此该变量从那时开始在程序中存在。
例如:
if (true) //this statement happens ONLY ONCE
{
const variable = x;
}
答案 0 :(得分:4)
主要问题是您不能直接引用if
主体之外的变量。
简单的解决方法是在外部范围中将您类型的指针默认设置为nullptr
,然后在static
中使用thread_local
或if
,并将外部作用域指针设置为:
Foo* f = nullptr;
if (/*condition*/){
static Foo foo;
f = &foo;
}
您可以根据需要设置类型const
。另一种方法是使用std::variant
或std::optional
。
但是,如果您要实现某种手段来使一段代码仅运行一次,则标准的使用方法是使用
std::once_flag flag;
std::call_once(flag, []{/* ToDo - code here */});