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

[C++] Definicja klasy w kilku plikach nagłówkowych

Ostatnio zmodyfikowano 2014-02-11 21:33
Autor Wiadomość
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.
P-104471
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.
P-104472
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.
P-104473
Monika90
» 2014-02-11 20:45:13
OK, ale czy to musza być pliki nagłówkowe (hpp)?

Możesz zrobić tak:
plik game.hpp
C/C++
#ifndef GAME_HPP_INCLUDED
#define GAME_HPP_INCLUDED
class Game
{
public:
    void wczytuj();
    void rysuj();
    void kolizja();
};
#endif

plik game-grafika.cpp
C/C++
#include "game.hpp"
void Game::wczytuj() { }
void Game::rysuj() { }

plik game-kolizja.cpp
C/C++
#include "game.hpp"
void Game::kolizja() { }

plik main.cpp
C/C++
#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ą.
P-104475
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.
P-104482
« 1 »
  Strona 1 z 1