Metoda const – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Metoda const – C / C++ – Fórum – Programujte.comMetoda const – C / C++ – Fórum – Programujte.com

 

kas
~ Anonymní uživatel
4 příspěvky
24. 5. 2009   #1
-
0
-

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

Nahlásit jako SPAM
IP: 213.194.242.–
bukaj_0010
Věrný člen
24. 5. 2009   #2
-
0
-

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?

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Jura
~ Anonymní uživatel
637 příspěvků
24. 5. 2009   #3
-
0
-

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;
// ....
}
}

Nahlásit jako SPAM
IP: 85.207.192.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý