Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Zmienna o tej samej nazwie w klasie i w metodzie

Ostatnio zmodyfikowano 2013-06-17 22:20
Autor Wiadomość
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 :


C/C++
...

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;
   
   
};
P-85751
SeaMonster131
» 2013-06-17 21:48:48
Pewnie jest konflikt między zmienną w klasie, a argumentem metody odswiez_szybkosc_ataku.
P-85753
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 .
P-85756
jankowalski25
» 2013-06-17 22:20:10
C/C++
#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.
P-85760
« 1 »
  Strona 1 z 1