kalin93
(Kalin 93)
#1
Mam sobie taki o to fragment kodu :
class Menu
{
public:
Menu();
~Menu();
void WyswietlMenu();
friend class GFX;
friend class Gra;
};
i następnie chce się odwołać z klasy Menu do metody z klasy GFX w ten sposób :
GFX::DodajObraz (0,100,GFX::StworzText ("Wyjdz z gry",Kolor));
I dostaje błąd kompilacji:
error C2352: 'GFX::StworzText' : illegal call of non-static member function
Jakieś pomysły ?
Quentin
(Quentin)
#2
Funkcja DodajObraz w klasie GFX jest statyczna :?: Bo wg kompilatora nie bardzo…
kalin93
(Kalin 93)
#3
Ale co się zmieni z metodami, zmiennymi jesli dodam przed nie słówko static, mógłbyś to objaśnić ?
etam
(etam)
#4
http://www.cplusplus.com/doc/tutorial/classes2/#static
Wydaje mi się, że chcesz zrobić coś nie tak i na około.
Chyba chcesz zrobić tak:
GFX gfx;
gfx.DodajObraz (0,100,gfx.StworzText ("Wyjdz z gry",Kolor));
Oczywiście nie powinieneś konstruować gfx lokalnie, tylko musisz go przekazywać przez referencję.
kalin93
(Kalin 93)
#5
Myślałem o czymś innym, w funkcji main najpierw tworze wskaźnik do klasy GFX a potem wskaźnik do klasy Menu.
game.obj : error LNK2001: unresolved external symbol "private: static struct _TTF_Font * GFX::Czcionka" (?Czcionka@GFX@@0PAU_TTF_Font@@A)
game.obj : error LNK2001: unresolved external symbol "private: static struct SDL_Surface * GFX::Out" (?Out@GFX@@0PAUSDL_Surface@@A)
Takie błędy teraz pokazuje mi kompilator.