Dobrý den, mám metodu která je definována jako const a nemohu to změnit, existuje nějaký způsob jak z ní změnit nějaké hodnoty ?? děkuji
Fórum › C / C++
Metoda const
kas
existuje nějaký způsob jak z ní změnit nějaké hodnoty ??
Obsah instance by se neměl dát měnit, ale můžeš libovolně manipulovat s globálními daty.
Mimochodem, proč bys chtěl z konstantní metody měnit nějaké vlastnosti objektu? A čím to, že když můžeš měnit samu metodu, nemůžeš změnit její deklaraci?
Zdravím,
ta možnost tu samozřejmě je, nicméně asi bych se pozastavil nad návrhem(pokud ovšem nemáš pevně dané rozhraní, které je blbě navržené). Ale abych jen neplácal, tak jedno z řešení je použít const_cast a odstranit modifikátor const, nebo deklarovat proměnnou, která má jít změnit, jako mutable. Jen znovu zopakuju, že obojí by se mělo používat s rozvahou.
class A
{
/*mutable*/ int a;
void mojeMetoda() const {
A * thisA = const_cast<A*>(this); // pripadne mutable a ten tenhle cirkus si odpustit
thisA->a = 5;
// ....
}
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Const/non-const metoda s vyuzitim sablon — založil Stamp
Metoda static a const — založil liamlim
Const TypeName GetObjectMinSize(params) const — založil _Miro1701
Moderátoři diskuze