gpt4 book ai didi

c++ - 是否可以定义一个只能设置一次的变量?

转载 作者:IT老高 更新时间:2023-10-28 22:03:00 26 4
gpt4 key购买 nike

我知道 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++;
}

最佳答案

很容易自己动手。

template<typename T>
class SetOnce
{
public:
SetOnce(T init) : m_Val(init)
{}

SetOnce<T>& operator=(const T& other)
{
std::call_once(m_OnceFlag, [&]()
{
m_Val = other;
});

return *this;
}

const T& get() { return m_Val; }
private:
T m_Val;
std::once_flag m_OnceFlag;
};

然后只需为您的变量使用包装类。

SetOnce<int> nFirst(0);
nFirst= 1;
nFirst= 2;
nFirst= 3;

std::cout << nFirst.get() << std::endl;

输出:

1

关于c++ - 是否可以定义一个只能设置一次的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35800643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com