Dołączanie plików nagłówkowych c++

0

Witam, stworzyłem klasy i struktury opisujące animacje, przyciski i pola edycji w SFML. Wcześniej miałem je wszystkie w pliku głównym .cpp, jednak miałem problem ponieważ jedne potrzebowały drugich a drugie pierwszych a tak nie może być w takim zapisie. Jeżeli dałem wyżej zapis:

 class Button; 

Po to aby tylko pokazać że taka klasa wystąpi niżej, wywalało mi to błąd, że używam niezdefiniowanej klasy Button. No więc postanowiłem wszystkie te klasy poumieszczać w plikach nagłówkowych i potem je połączyć ze sobą i z programem. Wyszło mi w sumie 8 plików nagłówkowych i mam problem bo gdy np. W jednej klasie napiszę metodę:

 
#include "Button.h" //w tym pliku zawarta jest klasa Button

struct IObject
{
    void SendToMenu(Button sender)  //Błąd - niezdefiniowana klasa Button
    {
        switch (menu_type)
        {
        case menu::game:
            Game.AllButtons.push_back(&sender);
            break;
        }
    }
 
    virtual ~IObject() {};
};

I dołączę inny plik nagłówkowy przechowujący klasę button aby nie wywaliło błędu o niezdefiniowanej klasie to i tak mi wywala ten błąd. Jeżeli wyżej dopiszę : class Button; To i tak wywali, i mam teraz 63 błędy dotyczące niezdefiniowanych klas. Ktoś mi powie jak mogę połączyć tak aby synchronicznie się uzupełniały? Z góry dziękuję!

2

http://jonjagger.blogspot.com/2013/04/the-include-test.html Lektura i zrozumienie. W definicji metody, która przyjmuje Button przez kopię musisz widzieć definicję Button. Gdybyś zachował samą deklarację metody, a jej definicję przeniósł do .cpp, to w nagłówku by wystarczyła forward-deklaracja class Button;

1 użytkowników online, w tym zalogowanych: 0, gości: 1