Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] ISO C++ forbids или проблеммы с классами 
V
    Опции темы
kefir01
Дата 10.10.2010, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Здравствуйте, господа знатоки! =)

Чует мое сердце, что буду бит за сей вопрос, но что-то никак не вопру в чем проблема.

Глядите, есть унаследованный от QGraphicsView класс QGSMap, а в нем - унаследованный от QGraphicsItem класс QGSLayer:

qgsmap.h
Код

#define QGSMAP_H

#include <QGraphicsView>
#include "qgsmap/qgslayer.h"

class QGSLayer;

class QGSMap : public QGraphicsView
{
    Q_OBJECT

public:
    explicit QGSMap(QWidget *parent = 0);

    QList<QGSLayer*> getLayers();
    QGSlayer* getLayer(int index);

...


qgsmap/qgslayer.h (qgsmap - папка)
Код

#ifndef QGSLAYER_H
#define QGSLAYER_H

#include <QGraphicsItem>

class QGSLayer : public QGraphicsItem
{
    Q_OBJECT
public:
    QGSLayer();
    virtual ~QGSLayer();
};

#endif // QGSLAYER_H



В награзу за труды я получаю ISO C++ forbids declaration of 'QGSlayer' with no type
Вроде и forward declaration сделал и указатели использую...

Буду рад если выявите и поясните наличие фундаментальных заблуждений в объявлении классов (если таковые имеются).

Заранее спасибо!

Это сообщение отредактировал(а) kefir01 - 10.10.2010, 04:05
PM MAIL   Вверх
boostcoder
Дата 10.10.2010, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



Цитата(kefir01 @  10.10.2010,  04:04 Найти цитируемый пост)
#include "qgsmap/qgslayer.h"

попробуй закомментируй.
если в файле qgsmap.h используешь только указатели на него, то этого не нужно.

Добавлено через 43 секунды
Цитата(kefir01 @  10.10.2010,  04:04 Найти цитируемый пост)
получаю ISO C++ forbids declaration of 'QGSlayer' with no type

покажи полный вывод компилятора.
PM WWW   Вверх
SABROG
Дата 10.10.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Код

QGSlayer* getLayer(int index);


Тут "l" маленькая, а должна быть большая "L", опечатка.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kefir01
Дата 10.10.2010, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Нда надо спать больше))  smile 

Спасибо!

Задам тогда другой вопрос - как избежать 
Код

 invalid conversion from 'QGraphicsItem* const' to 'QGSLayer*'

?

В смысле - как избежать ручного переделывания конструкций типа:
Код

    foreach(QGSLayer *itm, items())
    {
        if(itm->topLevelItem() == itm)
            list.append(itm);
    }

где items() - QList<QGraphicsItem*>

Или здесь только влезание в qgraphicsitem.h поможет?

Это сообщение отредактировал(а) kefir01 - 10.10.2010, 12:26
PM MAIL   Вверх
SABROG
Дата 10.10.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Я бы не рекомендовал использовать foreach, если планируется изменять данные в контейнере. Кроме того foreach создает временную копию всего контейнера, поэтому возвращаемые элементы идут как const.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kefir01
Дата 10.10.2010, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

Репутация: 1
Всего: 2



Окей буду знать, спасибо)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.