[C++] Definicja klasy w kilku plikach nagłówkowych
Ostatnio zmodyfikowano 2014-02-11 21:33
Vister26 Temat założony przez niniejszego użytkownika |
[C++] Definicja klasy w kilku plikach nagłówkowych » 2014-02-11 20:10:29 Nie wiem, czy dobrze opisałem problem w temacie. Chodzi mi mniej więcej o to, aby stworzyć sobie jakąś klasę a potem kolejne metody i zmienne tej klasy definiować w oddzielnych plikach *.hpp. Taki podział kodu zauważyłem w SFML-u, ale nie zbyt zrozumiałem zasadę działania, więc proszę o dokładniejsze info. |
|
Monika90 |
» 2014-02-11 20:33:01 Ale dlaczego chesz mieć definicje metod w osobnych plikach hpp? Typowo się robi tak: w pliku hpp definicja klasy i metod inline, a w odpowiadającym mu pliku cpp definicja pozostałych metod.
Jeżeli twoje metody są tak skomplikowane, że każda z nich wymaga osobnego pliku, to na raczej nie powinny być to metody inline, tzn. nie powinny być w pliku hpp, tylko w cpp. |
|
Vister26 Temat założony przez niniejszego użytkownika |
» 2014-02-11 20:37:51 Nie są skomplikowane tylko różnią się od siebie. To znaczy mam np. klasę class Game i w niej funkcje do wczytywania i rysowania grafik, ale też do kolizji i prostej fizyki, i chcę aby te dwa rodzaje metod były w oddzielnych plikach. |
|
Monika90 |
» 2014-02-11 20:45:13 OK, ale czy to musza być pliki nagłówkowe (hpp)? Możesz zrobić tak: plik game.hpp #ifndef GAME_HPP_INCLUDED #define GAME_HPP_INCLUDED class Game { public: void wczytuj(); void rysuj(); void kolizja(); }; #endif
plik game-grafika.cpp #include "game.hpp" void Game::wczytuj() { } void Game::rysuj() { }
plik game-kolizja.cpp #include "game.hpp" void Game::kolizja() { }
plik main.cpp #include "game.hpp" int main() { Game gra; gra.wczytuj(); gra.rysuj(); gra.kolizja(); }
Pliki main.cpp, game-grafika.cpp i game-kolizja.cpp dodajesz do projektu, po to żeby kompilator wiedział że istnieją. |
|
Vister26 Temat założony przez niniejszego użytkownika |
» 2014-02-11 21:33:24 Dzięki za pomoc! Niestety niewykluczone, że będę jeszcze drążył temat, bo mam pewne wątpliwości. |
|
« 1 » |