[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 »  |