Statyczne pola i metody
Ostatnio zmodyfikowano 2015-10-11 23:47
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. #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 ) { * 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 ? |
|
carlosmay |
» 2015-10-11 21:46:34 static void funkcja( static int & statyczna ); funkcja statyczna ma tylko dostęp do statycznych składowych klasy. |
|
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. |
|
Monika90 |
» 2015-10-11 22:47:53 Wyrzuć ten parametr w ogóle: class Klasa { public: static int licznik; static void funkcja(); };
void Klasa::funkcja() { licznik = 100; }
|
|
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łę? |
|
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. |
|
carlosmay |
» 2015-10-11 23:47:21 static void funkcja( );
void Klasa::funkcja( ) { licznik = 100; }
Klasa::funkcja( );
k3.funkcja( ); );
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. |
|
« 1 » |