Russian Qt Forum

Программирование => С/C++ => Тема начата: PulSar.CE3194694 от Август 04, 2010, 12:16



Название: multiple types in one declaration - как лечить?
Отправлено: PulSar.CE3194694 от Август 04, 2010, 12:16
Добрый день!
Проблема: создал класс для виджета:
Код:
#ifndef PAINTWIDGET_H
#define PAINTWIDGET_H

#include <QWidget>

class PaintWidget : public QWidget
{
    Q_OBJECT
public:
    PaintWidget();
protected:
    void paintEvent(QPaintEvent *event);
signals:
    void CreateTab();
}

#endif // PAINTWIDGET_H
Описал его .cpp файле. Затем в заголовочном файле главного окна программы создал инклуд: #include "PaintWidget.h" и там же в приват секции создал указатель с типом PaintWidget: PaintWidget *MyWidget; Далее в .cpp файле главного окна описал, что с ним делать. Хотел скомпилировать, а он выдал: multiple types in one declaration (сослался на mainwindow.h). Подскажите, плз, как лечить это. Пытался по всякому переписывать, но ничего не получается...((


Название: Re: multiple types in one declaration - как лечить?
Отправлено: kuzulis от Август 04, 2010, 12:47
Цитировать
Затем в заголовочном файле главного окна программы создал инклуд: #include "PaintWidget.h" и там же в приват секции создал указатель с типом PaintWidget: PaintWidget *MyWidget;

Не нужен там #include "PaintWidget.h"! Раз в привате находится указатель на PaintWidget  - то достаточно сверху перед классом MainWindow написать просто: class PaintWidget . А уже в mainwindow.cpp делать инклуд #include "PaintWidget.h".

Т.е.

mainwindow.h

Код:
...
class PaintWidget;

class MainWindow : public ......
{
...
private:
    PaintWidget *MyWidget;
};

mainwindow.cpp

Код:
...
include "PaintWidget.h"
...

MainWindow::MainWindow(...)
{
}
...


Название: Re: multiple types in one declaration - как лечить?
Отправлено: Igors от Август 04, 2010, 12:48
Когда описание класса закрывается } (фигурная скобка) надо после нее ; (точка с запятой). Иначе получите фантастические ошибки  :)


Название: Re: multiple types in one declaration - как лечить?
Отправлено: PulSar.CE3194694 от Август 04, 2010, 15:14
Спасибо! Решено. Именно знак ; я забыл написать! :) :-\