Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Мотороллер
429 / 241 / 37
Регистрация: 05.08.2013
Сообщений: 1,654
Завершенные тесты: 1
#1

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

23.07.2015, 22:38. Просмотров 232. Ответов 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++):

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

Ошибка в описании структуры - C++
Я новичок. Не могу разобраться как нормально описать структуру(( компилятор пишет ошибку. на first.a=1; #include &lt;stdio.h&gt; int...

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

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

Static в описании метода класса - C++
всем привет. что такое static в описании метода класса или самого класса. что такое статичный метод? что такое не статичный метод?

Требует int в описании конструктора - C++
Всем доброго времени суток! Столкнулся с проблемой, написал h-файл класса startPoint#ifndef startPoint_h #define startPoint_h #include...

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

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

Не думаю, что это поможет, но попробуйте написать так:
C++
1
explicit Cursor(ABLSourceEditor* surceEdt);
0
Мотороллер
429 / 241 / 37
Регистрация: 05.08.2013
Сообщений: 1,654
Завершенные тесты: 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
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
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
Привет! Вот еще темы с ответами:

Стрелка в описании функции обратного вызова - C++
#include &lt;iostream&gt; #include &lt;algorithm&gt; std::string s = &quot;hello&quot;; auto end = std::unique(s.begin(), s.end(), (char a, char b) -&gt; bool...

При описании класса String компилятор выдает непонятные сообщения об ошибках - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class String{ public: String(); String(const char *const); ...

Что подразумевает требование "алгоритмы и структуры данных" в описании вакансий? - C++
Салют киберфорум! Во многих вакансиях программиста С++ требуется знание &quot;алгоритмов и структур данных&quot;. Что под этим понимается? Что -...

Объявление объекта одного класса в описании другого класса - C++
Здравствуйте. Почему при объявлении Student s в классе Teacher не возникает ошибки? Ведь такой объект уже существует. И почему при...


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

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

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