[C++] wyciąganie właściwości statycznej przez inną klasę

Witam nie rozumiem dlaczego nie mogę wyciągnąć sobie przez klasę A statycznej właściwości na dodatek publicznej z klasy B?

class A 

{

public: void pokaz_liczbe(); 

};

void A::pokaz_liczbe()

{

 cout<
}

class B 

{

public: static int liczba; 

};

int B::liczba = 1; //globalizacja

wywala mi w klasie A podczas wywołania a funkcja main mi pokaze tą liczbe takim samym wywołaniem

cout<

czy ktoś może mi to wytłumaczyć oraz zaproponować rozwiązanie problemu, potrzebuję jakoś pobrać tą zmienną statyczną do innej klasy…

Dzięki

A jak jest z kolejnością deklaracji klas / dołączaniem nagłówków? Podejrzewam, że w tym tkwi problem.

w main.cpp wygląda to tak

#include "b.h"

#include "a.h"

Pewnie klasę B zadeklarowałeś po klasie A.

Przenieś funkcję void A::pokaz_liczbe() po deklaracji klasy B, bo inaczej skąd niby kompilator ma wiedzieć czym jest to B i czym jest ta liczba w tym B.

próbowałem zmieniać, to nie o to chodzi…

Dodane 16.10.2010 (So) 14:33

skoro najpierw includuję klasę B to czemu ma nie wiedzieć ?

Jeśli wrzucić kod do 1 pliku, gdzie najpierw występuje klasa B, następnie A, to się kompiluje. Komunikat sugeruje, że najpierw kompilator napotyka się na deklarację klasy A i “nie wie” czym jest B::liczba.

ja niestety nie mogę tego trzymać w 1 pliku, dziwny problem bo implementuję klasy wydaje mi się że w odpowiedniej kolejności

Dodane 16.10.2010 (So) 14:37

hmm ja wczytuję pliki .h a jak to jest z kolejnością .cpp ?

skład plikow mam proponowamy przez wxDev czyli klasa w .h a funkcje klasy w .cpp i owa funkcja jest wlasnie w a.cpp

plik A.h

class A

{

    public:

        void pokaz_liczbe();

};

plik A.cpp

#include "A.h" 

#include "B.h" 

#include 

using namespace std;


void A::pokaz_liczbe()

{

    cout << B::liczba;

}

plik B.h

class B

{

    public:

        static int liczba;

};

plik B.cpp

#include "B.h" 


int B::liczba = 1;

dzięki za pomoc, o to mi chodziło, przy okazji chciałbym zapytać jak stworzyć globalny obiekt?

Skoro nie chcesz przyznać się jak porozrzucałeś swój kod to szukaj błędu sam:

a.h:

#include "b.h"

Do pliku A.cpp dopisać

A a;

Do pliku A.h dopisać

extern A a;