Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Qt по ходу баг

307
24 января 2010 года
Artem_3A
863 / / 11.04.2008
Доброго времени суток. Есть код.

Код:
#ifndef CHTMLPARSER_H
#define CHTMLPARSER_H

#include <QThread>
#include <QFile>
#include <QTextStream>
#include <QStringList>

enum FindType
{
  KMP,
  OvB,
};

class CHtmlParser:
        public QThread
{
    Q_OBJECT
private:
    CHtmlParser(void){}

public:
    explicit CHtmlParser(const QString& file)
        :parse_file(file), parse_result()
    {   }

    ~CHtmlParser(void)
    {   parse_result.clear(); }
public:
    static void setOpenTag(const QString& tag)
    {   CHtmlParser::tag_open = tag; }

    static void setCloseTag(const QString& tag)
    {   CHtmlParser::tag_close = tag; }

    static void setFindType(const FindType& type)
    {   CHtmlParser::find_type = type; }

protected:
    void run(void)
    {   parsing(); }

private:
    void parsing(void)
    {
        //... some code
    }

    long getEntry_KMP(QTextStream& stream,
                      long start_position,
                      long end_position,
                      const QString& sub_string)
    {
        //... some code
    }

    long getEntry_OvB(QTextStream& stream,
                      long start_position,
                      long end_position,
                      const QString& sub_string)
    {
        //... some code
    }

private:
    QString           parse_file;
    QStringList       parse_result;

private:
    static QString    tag_open;
    static QString    tag_close;
    static FindType   find_type;
    static const long block_size = 500;
    static const long no_entry = -1;
};

FindType CHtmlParser::find_type = FindType(KMP);
QString CHtmlParser::tag_open = "<img src=\"";
QString CHtmlParser::tag_close = "\" ";

#endif // CHTMLPARSER_H


и

Код:
#include <QtCore/QCoreApplication>
#include "C:\Users\artem\Documents\LectureManager\CHtmlParser.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    CHtmlParser parser("index.htm");
    parser.start();
    parser.wait();
    return a.exec();
}


компилятор ругается следующим образом:
[ATTACH]4014[/ATTACH]

использую, Qt 4.6, QtCreator 1.3...

Не могу понять в чем дело!
307
24 января 2010 года
Artem_3A
863 / / 11.04.2008
Небольшое добавление.
[ATTACH]4015[/ATTACH]
412
24 января 2010 года
grgdvo
323 / / 04.07.2007
Бага нет, похоже сначала вам надо свой класс прогнать через moc-компилятор.

Уже не актуально :)
307
24 января 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: grgdvo
Бага нет, похоже сначала вам надо свой класс прогнать через moc-компилятор.

Уже не актуально :)



то есть выполнить qmake, не помогло, что очень странно!
очистка + qmake + сборка тоже не дало эффекта!

1.9K
24 января 2010 года
GreenRiver
451 / / 20.07.2008
Здесь похоже проблема в инициализации статических членов класса: компилятор именно на них ругается.
Хотя на первый взгляд все правильно написано. Попробуй вынести инициализацию в .cpp файл.
307
24 января 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: GreenRiver
Здесь похоже проблема в инициализации статических членов класса: компилятор именно на них ругается.
Хотя на первый взгляд все правильно написано. Попробуй вынести инициализацию в .cpp файл.



самое смешное, что это вроде как решило проблему! но вопрос почему первоначально не работало, ведь фактически ни чего не изменилось... может мне это кто нить объяснить? бо лично я в замешательстве!

1.9K
24 января 2010 года
GreenRiver
451 / / 20.07.2008
Компилятор считает, что это попытка ещё раз объявить статическую переменную в классе. Тонкость ли это C++ или данного компилятора, я не знаю :D Скорее первое...
307
24 января 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: GreenRiver
Компилятор считает, что это попытка ещё раз объявить статическую переменную в классе. Тонкость ли это C++ или данного компилятора, я не знаю :D Скорее первое...



ну в общем спишем все на gcc, бо раньше я успешно объявлял и инициализировал переменные в одном файле, пользуя при этом компилятор от мелкософта.

1
24 января 2010 года
kot_
7.3K / / 20.01.2000
Цитата: GreenRiver
Компилятор считает, что это попытка ещё раз объявить статическую переменную в классе. Тонкость ли это C++ или данного компилятора, я не знаю :D Скорее первое...


Либо бок товарисча. Потому как видимо в объявление включен спп-файл. ИМХО это тонкости не си-пласпласа - а конкретного камрада.

16K
22 февраля 2010 года
asmforce
186 / / 05.01.2010
Q_OBJECT - указание MOC (Meta Object Compiler). Тут тонкость системы компиляции и сборки. Для работы MOC необходимо объявление класса вынести в .h или .hpp, а реализацию в .cpp! Все просто.
1.9K
22 февраля 2010 года
GreenRiver
451 / / 20.07.2008
Цитата: asmforce
Q_OBJECT - указание MOC (Meta Object Compiler). Тут тонкость системы компиляции и сборки. Для работы MOC необходимо объявление класса вынести в .h или .hpp, а реализацию в .cpp! Все просто.



Ну так на том и порешили. Разве нет?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог