Pobieranie statycznej wartosci z klasy
Ostatnio zmodyfikowano 2012-05-21 12:53
diego997 Temat założony przez niniejszego użytkownika |
Pobieranie statycznej wartosci z klasy » 2012-05-19 17:47:22 Cześć możecie mi powiedzieć jak pobrać statyczną wartość jakiejś klasy bez tworzenia obiektu tej klasy? |
|
OSA_PL |
» 2012-05-19 18:11:35 Spróbuj tak: std::cout << klasa::zmienna;
|
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-05-19 19:54:34 Już próbowałem nie działa tak |
|
akwes |
» 2012-05-19 20:27:26 Zdefiniuj "nie działa". Bo odpowiedź na "nie działa" jest "robisz coś źle". #include <iostream>
class lol { public: static int lols; };
int lol::lols = 30;
int main() { std::cout << "Lols: " << lol::lols; return 0; }
|
|
jsc |
» 2012-05-19 20:55:03 Cześć możecie mi powiedzieć jak pobrać statyczną wartość jakiejś klasy bez tworzenia obiektu tej klasy? |
To nie możliwe, bo nie ma czegoś jak wartość klasy, bo wszystkie wartości odnoszą się do obiektów. A coś takiego: i tak niejawnie tworzy obiekt. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-05-19 21:39:53 Takie coś nie działa Niejawnie to znaczy ? Jak długo taki obiekt istnieje w pamięci ? Czy jeżeli wpiszę wykonam tą instrukcję 5 razy to stworzę niejawnie 5 obiektów ? #include <iostream>
class lol { public: static int lols; int getLols(); };
int lol::getLols() { return lols; }
int lol::lols = 30;
int main() { std::cout << "Lols: " << lol::getLols(); return 0; } [ cpp ] |
|
akwes |
» 2012-05-19 21:58:23 Nie działa CZYLI CO NIE DZIAŁA? Nie kompiluje się? Wyświetla się zła wartość? Co Ci w tym nie pasuje?! Pytałem już raz, to uściśliłeś o słowo "takie"... @jsc Czyli według Ciebie samo istnienie zmiennej statycznej tworzy obiekty? Bo zmienne statyczne są zerowane. Jakoś mi się nie wydaje. Zwłaszcza, że destruktor milczy. http://ideone.com/4cplthttp://ideone.com/sddTKNo i dlaczego działałoby wtedy class lol { lol() { lols++; } public: static int lols; ~lol() { std::cout << "Raport: Obiekt ID: " << lols << " zostal zniszczony \n"; lols--; } };
int lol::lols = 30;
skoro int main() { lol(); return 0; }
wyrzuca błąd (zresztą oczywiste że tak zrobi). Przecież static to jest prawie że zwykła zmienna globalna w przestrzeni nazw? |
|
OSA_PL |
» 2012-05-19 22:01:12 #include <iostream>
class lol { static int lols; public: static int getLols(); };
int lol::getLols() { return lols; }
int lol::lols = 30;
int main() { std::cout << "Lols: " << lol::getLols(); return 0; }
|
|
« 1 » 2 |