【发布时间】:2010-09-15 16:53:34
【问题描述】:
可能重复:
Is there some ninja trick to make a variable constant after its declaration?
考虑以下最小示例:
void MutateData(std::string&);
int main()
{
std::string data = "something that makes sense to humans.";
::MutateData(data); // Mutates 'data' -- e.g., only changes the order of the characters.
// At this point, 'data' should never be changed.
// Mixing the above with const-correct code seems ugly.
}
目前,我正在做:
namespace
{
std::string PrepareData(std::string data)
{
::MutateData(data);
return data;
}
}
int main()
{
const std::string data = ::PrepareData("something that makes sense to humans.");
}
在声明点之外模拟const有哪些优雅的解决方案?
编辑:我忘了澄清我不能轻松(不是我的代码)更改MutateData。
【问题讨论】:
-
谢谢。我知道应该已经有一个问题了。可惜发帖前没找到。
-
有些主题很难搜索,没有找到它们也没有什么可耻的。在某些方面,您的标题优于之前的标题,这使其成为关闭但未删除的主要候选者,作为未来访问者面临相同搜索问题的路标。
标签: c++ constants const-correctness