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

Statyczne pola i metody

Ostatnio zmodyfikowano 2015-10-11 23:47
Autor Wiadomość
ast44
Temat założony przez niniejszego użytkownika
Statyczne pola i metody
» 2015-10-11 20:50:55
Chciałem coś zrobić sobie z metodami i polami static.Postanowiłem zrobić licznik instancji i statyczną metodę do jego modyfikacji.

C/C++
#include <iostream>

using namespace std;

class Klasa
{
public:
   
    int x = 5;
    static int licznik;
   
    static void funkcja( const int * statyczna );
   
    Klasa()
    {
        licznik++;
    }
   
    ~Klasa()
    {
        licznik--;
    }
};

int Klasa::licznik = 0;
void Klasa::funkcja( const int * statyczna ) // funkcja statyczna ma dostęp tylko do składników statycznych klasy
{
    * statyczna = 100;
}

int main()
{
    Klasa kl;
    cout << kl.licznik << endl;
    Klasa k2;
    cout << k2.licznik << endl;
    Klasa k3;
    cout << k3.licznik << endl;
   
    cout << Klasa::licznik << endl;
   
    return 0;
}

Niestety program mi się wysypuje przy funkcji statyczne, że wartość licznik jest tylko do odczytu (chciałem użyć wskaźników żeby pracować na oryginale).Skoro funkcje statyczne mają za zadanie obsługiwanie składników statycznych to dlaczego wyskakuje ten błąd ?
P-138451
carlosmay
» 2015-10-11 21:46:34
static void funkcja( static int & statyczna );
 funkcja statyczna ma tylko dostęp do statycznych składowych klasy.
P-138454
ast44
Temat założony przez niniejszego użytkownika
» 2015-10-11 22:27:59
No tak.I przecież licznik jest wartością statyczną.
EDIT : Zamiast const oczywiście miało być static.Ale nadal wyskakują błędy.
P-138458
Monika90
» 2015-10-11 22:47:53
Wyrzuć ten parametr w ogóle:
C/C++
class Klasa
{
public:
   
    static int licznik;
   
    static void funkcja();
   
};

void Klasa::funkcja()
{
    licznik = 100;
}
P-138460
pekfos
» 2015-10-11 22:48:24
Zamiast const oczywiście miało być static.Ale nadal wyskakują błędy.
Po co kombinujesz na siłę?
P-138462
ast44
Temat założony przez niniejszego użytkownika
» 2015-10-11 23:05:42
Co mam wyrzucić i co kombinuję na siłę ? Chcę zobaczyć jak działają statyczne pola i metody.Polem statycznym jest licznik, a metodą statyczną funkcja w jakiś sposób zmieniająca pole statyczne( tutaj po prostu przypisuje wartość 100).I tylko tyle chciałem zrobić.Żeby zobaczyć jak to działa i wygląda w kodzie.
P-138463
carlosmay
» 2015-10-11 23:47:21
C/C++
static void funkcja( /*static int& statyczna*/ );
//......
void Klasa::funkcja( /*static int& statyczna*/ )
{
    //statyczna = 100; // dostep do zmiennej statycznej za pomoca argumentu
    licznik = 100; // dostep do zmiennej statycznej bezposredni
}
//.......
Klasa::funkcja( /*Klasa::licznik*/ ); // wywołanie w main()
// lub
k3.funkcja( /*Klasa::licznik*/ ); ); // wywolanie jako metoda
to co masz wykomentowane jest do wywołania jako funkcja (metoda) z parametrem,
ew. możesz wywołać bezpośrednio z operatorem zasięgu '::' i nie używać żadnych parametrów.
P-138467
« 1 »
  Strona 1 z 1