Не пойму в чем проблема. Есть класс:
#ifndef SCREENANALYZER_H
#define SCREENANALYZER_H
#include <QObject>
#include <QSize>
#include <QImage>
#include <QBuffer>
#include <QDesktopWidget>
#include "compareimages.h"
#include "session.h"
class ScreenAnalyzer : public QObject
{
Q_OBJECT
public:
explicit ScreenAnalyzer(QObject *parent = 0);
signals:
public slots:
void analyze();
static QSize getThumbnailSize(QImage &image);
static QImage getScreenshot();
static QByteArray imageToArray(QImage &image);
private:
Session *session;
};
// SCREENANALYZER_H
#endif
Ругается на Session *session(does not name a type)
Session:#ifndef SESSION_H
#define SESSION_H
#include <QMessageBox>
#include <QObject>
#include <QTcpSocket>
#include <rc4.h>
#include <packetsplitter.h>
#include <screenanalyzer.h>
#include <QJsonObject>
#include <QJsonDocument>
#include <screenfull.h>
#include <screenpreview.h>
typedef unsigned char BYTE;
class Session : public QObject
{
Q_OBJECT
public:
explicit Session(QObject *parent = 0);
signals:
public slots:
void sendData(QByteArray packet);
void connectTo(QString host,int port);
private slots:
void on_connected();
void on_disconnected();
void on_data();
void on_packet(QByteArray *packet);
private:
QTcpSocket *tcpSocket;
RC4 *rc4;
PacketSplitter *packetSplitter;
bool isAuth=false;
};
#endif // SESSION_H
Хотя в другом классе все нормально и при include "session.h" такой ошибки нет. Ничего не могу понять. Неужели компилятор не может понять если классы используют друг друга и у них есть includ-ы друг друга?
Сделайте поиск #define SESSION_H - он должен быть только в session.h и нигде больше
Если, как у Вас, используется только указатель/ссылка на Session, то грамотнее так
C++ (Qt)
// #include "session.h" // перенести в cpp файл
class Session;