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

[C++] Inicjalizacja statycznego skladnika klasy zdefiniowanej w innej klasie

Ostatnio zmodyfikowano 2012-12-25 22:24
Autor Wiadomość
kizia
Temat założony przez niniejszego użytkownika
[C++] Inicjalizacja statycznego skladnika klasy zdefiniowanej w innej klasie
» 2012-12-25 15:57:12
Mianowicie :
C/C++
class A
    :
{
    class B
        :
    {
    private:
        static int staszek;
    };
};

Nom i teraz chcialbym staszkowi nadac jakas wartosc ale tak
A::B::staszek = 2;
 Nie moge bo staszek jest prywatny :(
P-71908
Mrovqa
» 2012-12-25 17:11:16
Staszka możesz spokojnie zainicjalizować, ale nie możesz mieć prywatnej klasy zagnieżdżonej (domyślny kwantyfikator dostępu w klasach to private).
C/C++
#include <iostream>
using namespace std;

class A
{
public:
    class B
    {
    private:
        static int staszek;
    public:
        static void out() { cout << staszek << endl; }
    };
};
int A::B::staszek = 2;

int main()
{
    A::B::out();
}

http://ideone.com/9t7Fnc
P-71920
DejaVu
» 2012-12-25 20:05:50
za klasami napisz:
C/C++
int A::B::staszek( 2 );
P-71936
kizia
Temat założony przez niniejszego użytkownika
» 2012-12-25 21:59:57
Aniii ten sposób ani ten nie działa :(
P-71944
DejaVu
» 2012-12-25 22:14:32
Jak to nie działa, skoro obie metody się kompilują...? Jeżeli chcesz modyfikować zmienną spoza klasy to nie ma sensu jej czynić prywatnej. Powyższe sposoby służą do nadawania początkowej wartości dla zmiennej statycznej w klasie.
P-71955
Mrovqa
» 2012-12-25 22:15:36
@kizia dałem Ci nawet linka do ideone.com gdzie ładnie się skompilowało i nawet wykonało.
P-71956
kizia
Temat założony przez niniejszego użytkownika
» 2012-12-25 22:24:31
Racja wszystko smiga, mimo tego ze kilka minut wczesniej mialem identycznie teraz sie normalnie skompilowało.
Wielkie dzięki za pomoc!
P-71958
« 1 »
  Strona 1 z 1