Witam, ostatnio mam bardzo duży problem z łączeniem plików .h i .cpp, ale od początku.
Kiedyś, kiedy robiłem małe projekty w C++ (w code::blocks) na kilka plików .cpp tworzyłem jeden plik .h i tam zapisywałem wszystkie deklaracje funkcji które miały działać między plikami .cpp, wyglądało to mniej więcej tak.
Np. w pliku plik1.cpp zapisywałem wywołanie funkcji, w pliku spis.h deklaracje a np. w pliku plik2.cpp ciało funkcji. Jak była jakaś klasa która miała być widoczna dla wszystkich funkcji, po prostu zapisywałem ją w pliku spis.h.
I tak w pliku spis.h było coraz więcej i więcej deklaracji funkcji i klas, w końcu nie dało się połapać jaka funkcja jest do czego i gdzie co idzie, po prostu był jeden wielki śmietnik. Zrozumiałem że trzeba zrobić więcej plików .h no i tu jest problem bo nie wiem jak to połączyć.
Z początku wszystko połączyłem tak, że np. jakąś klasę zapisywałem w pliku KLASA.h i jeśli dany plik .cpp potrzebował tej klasy po prostu pisałem w nim #include "KLASA.h", [schemat uproszczony]
jak plik main.cpp potrzebował funkcję funkcja(); to po prostu robiłem tam #include plik2.h który to plik był połączony z plikiem plik2.cpp (zielona linia).
No ale właśnie to nie działa.
I tutaj jest właśnie ta problematyczna klasa, zakładając że wszystkie pliki .cpp potrzebowały klasy, która była w pliku KLASA.h po prostu połączyłem je wszystkie (#include "KLASA.h). Ale wyświetla mi błąd (zdj 2. na dole).
W końcu po szarpaniu się z tym łączenie między plikami stworzyłem połączenie, które nie ma żadnej pętli, takie coś: (uwaga, układ bardzo, bardzo uproszczny)
Teraz, jak plik main.cpp potrzebował funkcję funkcja(); to już nie dodawałem tam pliku2.h tylko plik1.h a ten przekazywał to do pliku2.h i do pliku2.cpp. W pliku1.h, pliku2.h i main.h zapisywałem tylko deklarację funkcji.
To działa ale taki szlak przez pliki .h jest bardzo problematyczny, plików .h w moim projekcie jest dużo dużo więcej. Muszę pamiętać że o pliku KLASA.h wie plik2.h, plik1.h wie o plik2.h a main.h wie o plik1.h.
Czy nie ma jakieś prostszej metody łącznia tego wszystkiego?
Wiem że to pytanie jest strasznie szczegółowe ale jak poprzednio zadałem to samo pytanie nikt nie wiedział o co mi chodzi.