Как правильно использовать #include в двух классах которые взаимодействуют друг с другом

Дарооууа, привет. Очень нуждаюсь в помощи, сидел сегодня часов 5 над этой жопой так и не понял как я могу это сделать. Проблема : у меня есть два класса которые унаследованы от одного предка(но думаю это не особо важно), а важно вот что - они должны быть заинклюжены друг в друга и работать между собой, вот как это выглядит:

Chat.h

#include "Type.h"
#include "Message.h"      

class Chat : public Type
{
public:

    Chat();

    Chat(qint64   id,
         QString  type,
         QString  title = "",
         QString  username = "",
         QString  firstName = "",
         QString  lastName = "");

    Chat(QJsonObject);

    //
    // много много методов с которыми всё более чем OK :)
    //

    // тот с которым всё не OK :(
    inline Message pinnedMessage() { return Message(_jsonObject.value("pinned_message").toObject); }

Message.cpp

#include "Type.h"
#include "Chat.h"
#include "User.h"

class Message : public Type
{
public:
    Message();

    Message(qint32  messageId,
            qint32  date,
            Chat    chat,                        // Ошибка: 'Chat' has not been declared
            User    from = User(),               // C User такой проблемы нет, т.к я не "инклюжу" Message.h в него (я так думаю что по этому)
            Chat    forwardFromChat = Chat(),    // Ошибка: 'Chat' has not been declared
            User    forwardFrom = User() );
    //
    //Тоже много других методов с которыми всё OK
    //

    //Тот на который ругается компилятор
     inline Chat    chat() { return Chat(_jsonObject.value("chat").toObject()); }  // 'Chat' does not name a type; did you mean 'stat'?

НО, но если я закомментирую pinnedMessage и уберу #include "Message.h" то все ошибки уходят. Кто-то пожалуйста молю вас объясните мне что мне делать как дальше жить я не могу просто сам. Спасибо огромное за ответ, даже за любую ссылку на литературу где показывают как это решить. Пробовал различные #ifndef и опережающее объявление класса но так ни к чему и не пришёл, что делать?


Ответы (0 шт):