Possible en double:
Is there some ninja trick to make a variable constant after its declaration?Ajout const-ness après le fait en C++
Prenons l'exemple minimale suivante:
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.
}
Actuellement, je fais:
namespace
{
std::string PrepareData(std::string data)
{
::MutateData(data);
return data;
}
}
int main()
{
const std::string data = ::PrepareData("something that makes sense to humans.");
}
Quelles sont les solutions élégantes pour simuler const
au-delà du point de déclaration?
EDIT: Je oublié de préciser que je ne peux pas facilement (pas mon code) changement MutateData
.
Cela ressemble à un doublon de http://stackoverflow.com/questions/3669315/is-there-some-ninja-trick-to-make-a-variable-constant-after-its-declaration/3669477#3669477 –
Merci pour cela. Je savais qu'il aurait déjà dû y avoir une question à ce sujet. Dommage que je ne l'ai pas trouvé avant de poster. – melmitchell
Certains sujets sont difficiles à rechercher, et il n'y a pas de honte à ne pas les trouver. À certains égards, votre titre est supérieur au précédent, ce qui en fait un candidat idéal pour être laissé fermé mais non supprimé comme un signe pour les futurs visiteurs aux prises avec le même problème de recherche. – dmckee