pain3hp
(pain3hp)
16 Październik 2010 12:22
#1
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
nr47
(Sawyer47)
16 Październik 2010 12:28
#2
A jak jest z kolejnością deklaracji klas / dołączaniem nagłówków? Podejrzewam, że w tym tkwi problem.
pain3hp
(pain3hp)
16 Październik 2010 12:29
#3
w main.cpp wygląda to tak
#include "b.h"
#include "a.h"
_alex
([alex])
16 Październik 2010 12:30
#4
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.
pain3hp
(pain3hp)
16 Październik 2010 12:31
#5
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ć ?
nr47
(Sawyer47)
16 Październik 2010 12:34
#6
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.
pain3hp
(pain3hp)
16 Październik 2010 12:35
#7
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
etam
(etam)
16 Październik 2010 12:44
#8
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;
pain3hp
(pain3hp)
16 Październik 2010 12:54
#9
dzięki za pomoc, o to mi chodziło, przy okazji chciałbym zapytać jak stworzyć globalny obiekt?
_alex
([alex])
16 Październik 2010 12:59
#10
Skoro nie chcesz przyznać się jak porozrzucałeś swój kod to szukaj błędu sam:
a.h:
#include "b.h"