[C++] Zmienna o tej samej nazwie w klasie i w metodzie
Ostatnio zmodyfikowano 2013-06-17 22:20
domin568 Temat założony przez niniejszego użytkownika |
[C++] Zmienna o tej samej nazwie w klasie i w metodzie » 2013-06-17 21:43:38 Witam , mam mały problem , otóż gdy stworze sobie w privtate : zmienną double przelicznik_zr_do_szybkosci są w niej śmieci . Następnie gdy w metodzie klasy ustawie ją na 0.01 to i tak gdy napisze cout << przelicznik_zr_do_szybkosci << endl ; to jest równy 0 . Jednak zręczność się zmienia .
Tutaj kod do pomocy :
...
while( punkty_statusu >= 0 ) { int co_wybrac; cin >> co_wybrac; if( co_wybrac == 1 ) { sila++; cout << "Dodales 1 pkt do sily , twoja aktualna sila wynosi " << sila << endl; } if( co_wybrac == 2 ) { wytrzymalosc++; cout << "Dodales 1 pkt do wytrzymalosci , twoja aktualn wytrzymalosc wynosi " << wytrzymalosc << " oraz posiadasz " << punkty_zycia << " punktow zycia " << endl; } if( co_wybrac == 3 ) { zrecznosc++; szybkosc_ataku = 1; odswiez_szybkosc_ataku( zrecznosc, szybkosc_ataku, przelicznik_zr_do_szybkosci ); cout << punkty_statusu << endl; punkty_statusu--; } ... void odswiez_szybkosc_ataku( int zrecznosc, int szybkosc_ataku, int przelicznik_zr_do_szybkosci ) { przelicznik_zr_do_szybkosci = 0.1; cout << przelicznik_zr_do_szybkosci << endl; szybkosc_ataku = przelicznik_zr_do_szybkosci * zrecznosc; cout << szybkosc_ataku << endl; cout << "a " << zrecznosc << endl; cout << "b " << szybkosc_ataku << endl; cout << "c " << przelicznik_zr_do_szybkosci << endl; } private: int wytrzymalosc; int punkty_zycia; int sila; int zrecznosc; int punkty_statusu; int szansa_na_kryta; int szybkosc_ataku; int obrazenia; double przelicznik_zr_do_szybkosci; }; |
|
SeaMonster131 |
» 2013-06-17 21:48:48 Pewnie jest konflikt między zmienną w klasie, a argumentem metody odswiez_szybkosc_ataku. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-06-17 21:57:47 To wiem :P ale jak to można rozwiązać , licze głównie na wasze doświadczenie , bo ja nigdy czegoś takiego nie miałem . |
|
jankowalski25 |
» 2013-06-17 22:20:10 #include <iostream>
class A { int data; public: A(); void set( int data ); };
A::A() : data( 0 ) { }
void A::set( int data ) { std::cout << "data=" << data << '\n'; std::cout << "this->data=" << this->data << '\n'; this->data = data; }
int main() { A a; a.set( 5 ); return 0; } Przeanalizuj powyższy przykład. Słowo kluczowe this daje dostęp do zmiennych składowych tej klasy. Inaczej zmienna traktowana jest jako argument wywoływanej funkcji, jeśli jej nazwa zostanie "zasłonięta" na liście argumentów funkcji. |
|
« 1 » |