【发布时间】:2016-06-18 11:01:27
【问题描述】:
我知道 const,它在创建后无法更改。但是我想知道是否有一种方法可以声明一个只设置一次的变量,之后就不能覆盖了。
在我的代码中,我想通过设置一个 nFirst 来避免 bool 变量,一旦设置为 nIdx,就不能将其设置为 nIdx 的新值。
我的代码:
int nFirst = 0;
int nIdx = 0;
bool bFound = false;
BOOST_FOREACH(Foo* pFoo, aArray)
{
if (pFoo!= NULL)
{
pFoo->DoSmth();
if (!bFound)
{
nFirst= nIdx;
bFound = true;
}
}
nIdx++;
}
【问题讨论】:
-
没有内置的 AFAIK,但您可以创建自己的类来轻松完成此操作。
-
不,使用标准功能是不可能的。
-
您可以为此创建自己的类。但是原始的布尔方法也是该类必须使用的,因此性能没有差异。
-
std::call_once,static变量或只是检查它是否已设置为 nIdx。是的,它不会阻止您在代码中的其他地方意外地将其分配给其他东西,但您的情况似乎并不需要它。 -
我还希望 C/C++ 具有创建变量
const的功能,这样任何后续代码(按当前块中的程序顺序)都无法修改它。示例:Class1 x; if (expr) { Class2 obj(); x = obj.f(); } else { x.doStuff(); } const x; /* Code following sees x as const Class1 */.
标签: c++