Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Мотороллер
431 / 242 / 43
Регистрация: 05.08.2013
Сообщений: 1,661
Завершенные тесты: 1
#1

Ошибка в описании коструктора - C++

23.07.2015, 22:38. Просмотров 244. Ответов 5
Метки нет (Все метки)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef CURSOR_H
#define CURSOR_H
 
#include <QObject>
#include <QTimer>
#include <QDebug>
#include <QRect>
#include "ablsourceeditor.h"
 
class Cursor : public QObject
{
    Q_OBJECT
 
public:
    bool needCursor();
    const QRect &getCoords();
    explicit Cursor(ABLSourceEditor*); //ABLStudio/cursor.h:20: ошибка: expected ')' before '*' token
    ~Cursor();
 
signals:
    void repaintCursor();
 
public slots:
    void updateCursor();
 
private:
    const short CURSOR_SIZE = 15;
    QTimer *timer;
    QRect coords;
    bool drawCursor;
};
 
#endif // CURSOR_H
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2015, 22:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка в описании коструктора (C++):

Как сделать так чтобы переменная в описании одной функции была доступна в описании другой?
Как сделать так чтобы переменная в описании одной функции была доступна в ...

Ошибка в описании структуры
Я новичок. Не могу разобраться как нормально описать структуру(( компилятор...

Ошибка в описании функции
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; main() { int i,j,k,*a,n,k2,m;...

Ошибка компиляции при описании алгоритма
Здравствуйте, помогите.. из-за чего при компиляция возникают такие оошибки.. ...

Почему происходит ошибка при описании массива?
int setSize; cout &lt;&lt; &quot;How many elements would you have? &quot;; cin &gt;&gt; setSize;...

с++, по циклам. B описании:
1. А) 1/a+1/(a(a+1))+...+1/(a(a+1)...(a+n) Б) П(сверху 52, снизу i=1):...

5
Krasiosoft
51 / 51 / 23
Регистрация: 01.06.2015
Сообщений: 189
24.07.2015, 03:38 #2
Проблема в ABLStudio/cursor.h:20, а не в классе Cursor. Если подставить любой другой указатель вместо ABLSourceEditor*, тогда такой проблемы не будет.
0
Мотороллер
431 / 242 / 43
Регистрация: 05.08.2013
Сообщений: 1,661
Завершенные тесты: 1
24.07.2015, 06:44  [ТС] #3
А в чем косяк? Не могу понять никак....
0
Krasiosoft
51 / 51 / 23
Регистрация: 01.06.2015
Сообщений: 189
24.07.2015, 07:17 #4
Я не знаю, что это за тип данных: ABLSourceEditor.

Для проверки замените временно ABLSourceEditor*, скажем, на QTimer*, ошибка должна пропасть. Если ошибка пропала, тогда ищите проблему в модуле, где описан ABLSourceEditor.

Не думаю, что это поможет, но попробуйте написать так:
C++
1
explicit Cursor(ABLSourceEditor* surceEdt);
0
Мотороллер
431 / 242 / 43
Регистрация: 05.08.2013
Сообщений: 1,661
Завершенные тесты: 1
24.07.2015, 08:58  [ТС] #5
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef ABLSOURCEEDITOR_H
#define ABLSOURCEEDITOR_H
 
#include <QWidget>
#include <QPainter>
#include <QColor>
#include <QFont>
#include <QPaintEvent>
#include <QDebug>
#include "cursor.h"
 
class ABLSourceEditor : public QWidget
{
    Q_OBJECT
 
protected:
    virtual void paintEvent(QPaintEvent *);
 
public:
    explicit ABLSourceEditor(QWidget *parent = 0);
    ~ABLSourceEditor();
 
public slots:
    void redrawCursor(bool);
 
private:
    const QColor backgroundColor = QColor(39, 40, 34, 255);
    Cursor *cursor;
};
 
#endif // ABLSOURCEEDITOR_H
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef CURSOR_H
#define CURSOR_H
 
#include <QObject>
#include <QTimer>
#include <QDebug>
#include <QRect>
#include "ablsourceeditor.h"
 
class Cursor : public QObject
{
    Q_OBJECT
 
public:
    explicit Cursor(ABLSourceEditor *wgt = 0);
    ~Cursor();
 
    const QRect &getCursorRect();
 
signals:
    void repaintCursor(bool);
 
private slots:
    void updateCursorVisible();
 
private:
    const short CURSOR_SIZE = 15;
    QTimer *timer;
    QRect cursorRect;
    bool cursorVisible;
};
 
#endif // CURSOR_H
у меня тут рекурсивное включение получается.... попробовал переработать следующим образом: в MainWindow
C++ (Qt)
1
2
3
#include <QMainWindow>
#include "cursor.h"
#include "ablsourceeditor.h"
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <QObject>
#include <QTimer>
#include <QDebug>
#include <QRect>
#include "ablsourceeditor.h"
 
class Cursor : public QObject
{
    Q_OBJECT
 
public:
    explicit Cursor(ABLSourceEditor *wgt = 0);
    ~Cursor();
 
    const QRect &getCursorRect();
 
signals:
    void repaintCursor(bool);
 
private slots:
    void updateCursorVisible();
 
private:
    const short CURSOR_SIZE = 15;
    QTimer *timer;
    QRect cursorRect;
    bool cursorVisible;
};
в ABLSourceEditor удалил включение cursor.h
теперь ругается на Cursor *cursor; /home/motoroller/Qt/ABLStudio/ablsourceeditor.h:27: ошибка: 'Cursor' does not name a type
Cursor *cursor;
^

Добавлено через 1 час 9 минут
есть одна догадка: из cursor.h убрать включение ablsourceeditor.h, сделать определение без описаня класса ABLSourceEditor, включить cursors.h в ablsourceeditor.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <QObject>
#include <QTimer>
#include <QDebug>
#include <QRect>
 
class ABLSourceEditor;
 
class Cursor : public QObject
{
    Q_OBJECT
 
public:
    explicit Cursor(ABLSourceEditor *wgt = 0);
    ~Cursor();
 
    const QRect &getCursorRect();
 
signals:
    void repaintCursor(bool);
 
private slots:
    void updateCursorVisible();
 
private:
    const short CURSOR_SIZE = 15;
    QTimer *timer;
    QRect cursorRect;
    bool cursorVisible;
};
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef ABLSOURCEEDITOR_H
#define ABLSOURCEEDITOR_H
 
#include <QWidget>
#include <QPainter>
#include <QColor>
#include <QFont>
#include <QPaintEvent>
#include <QDebug>
#include "cursor.h"
 
class ABLSourceEditor : public QWidget
{
    Q_OBJECT
 
protected:
    virtual void paintEvent(QPaintEvent *);
 
public:
    explicit ABLSourceEditor(QWidget *parent = 0);
    ~ABLSourceEditor();
 
public slots:
    void redrawCursor(bool);
 
private:
    const QColor backgroundColor = QColor(39, 40, 34, 255);
    Cursor *cursor;
};
 
#endif // ABLSOURCEEDITOR_H
0
DrOffset
7518 / 4514 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
24.07.2015, 13:30 #6
Цитата Сообщение от Мотороллер Посмотреть сообщение
есть одна догадка: из cursor.h убрать включение ablsourceeditor.h, сделать определение объявление без описаня класса ABLSourceEditor, включить cursors.h в ablsourceeditor.h
Ну почти. #include "ablsourceeditor.h" нужно включать в cursor.cpp. А вот насчет предварительного объявления - правильно.

Эта проблема возникает из-за перекрестных include. Вот тут расписано подробнее.
1
24.07.2015, 13:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2015, 13:30
Привет! Вот еще темы с решениями:

Static в описании метода класса
всем привет. что такое static в описании метода класса или самого класса. что...

Требует int в описании конструктора
Всем доброго времени суток! Столкнулся с проблемой, написал h-файл класса...

Стрелка в описании функции обратного вызова
#include &lt;iostream&gt; #include &lt;algorithm&gt; std::string s = &quot;hello&quot;; auto end =...

Использование шаблонов при описании классов template<typename type>
mylist.h template&lt;typename T&gt; class MyList { public: MyList(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru