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

Pobieranie statycznej wartosci z klasy

Ostatnio zmodyfikowano 2012-05-21 12:53
Autor Wiadomość
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?
P-56998
OSA_PL
» 2012-05-19 18:11:35
Spróbuj tak: 
C/C++
std::cout << klasa::zmienna; //gdzie klasa to nazwa twojej klasy, zmienna - nazwa zmiennej
P-56999
diego997
Temat założony przez niniejszego użytkownika
» 2012-05-19 19:54:34
Już próbowałem nie działa tak
P-57004
akwes
» 2012-05-19 20:27:26
Zdefiniuj "nie działa". Bo odpowiedź na "nie działa" jest "robisz coś źle".


C/C++
#include <iostream>

class lol
{
public:
    static int lols;
};

int lol::lols = 30;


int main()
{
    std::cout << "Lols: " << lol::lols;
    return 0;
}
P-57006
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:
C/C++
int lol::lols = 30;

i tak niejawnie tworzy obiekt.
P-57008
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 ?

C/C++
#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 ]
P-57013
akwes
» 2012-05-19 21:58:23

Takie coś nie działa

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/4cplt
http://ideone.com/sddTK

No i dlaczego działałoby wtedy

C/C++
class lol
{
    lol()
    {
        lols++;
    }
public:
    static int lols;
   
    ~lol()
    {
        std::cout << "Raport: Obiekt ID: " << lols << " zostal zniszczony \n";
        lols--;
    }
};

int lol::lols = 30;

skoro

C/C++
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?
P-57014
OSA_PL
» 2012-05-19 22:01:12
C/C++
#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;
}
P-57015
« 1 » 2
  Strona 1 z 2 Następna strona