Russian Qt Forum
Ноябрь 24, 2024, 04:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не пойму почему "does not name a type"  (Прочитано 3939 раз)
GPPsoft
Гость
« : Декабрь 22, 2013, 10:02 »

Не пойму в чем проблема. Есть класс:
Код:
#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-ы друг друга?
« Последнее редактирование: Декабрь 22, 2013, 10:05 от GPPsoft » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Декабрь 22, 2013, 11:22 »

Сделайте поиск #define SESSION_H - он должен быть только в session.h и нигде больше

Если, как у Вас, используется только указатель/ссылка на Session, то грамотнее так
Код
C++ (Qt)
// #include "session.h"   // перенести в cpp файл
 
class Session;
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.177 секунд. Запросов: 23.