Russian Qt Forum

Qt => Общие вопросы => Тема начата: ieroglif от Июнь 07, 2010, 09:40



Название: QFile наследник. проблема с readData(char *data,qint64 maxlen)
Отправлено: ieroglif от Июнь 07, 2010, 09:40
есть некий закрытый класс, который юзает данные из любого иодевайса.
SomeOtherClosedClass->openSource( QIODevice *dev);
я ему хочу подсовывать свои данные и делаю наследника от QFile.
данные хочу подменять по мере их чтения самим закрытым классом.
переопределяю кучу read методов, отслеживаю что удобнее всего подменять на уровне readData(....).
соответсвенно делаю банальный код:
Код
C++ (Qt)
#ifndef QMYFILE_H
#define QMYFILE_H
 
#include <QFile>
 
class QMyFile : public QFile
{
public:
   QMyFile(const QString &file = "");
   qint64 readData(char *data, qint64 maxlen);
};
 
#endif // QMYFILE_H
 
 
#include "qmyfile.h"
 
QMyFile::QMyFile(const QString &file) : QFile(file)
{
}
 
qint64 QMyFile::readData(char *data, qint64 maxlen) {
   return QFile::read(data,maxlen);
}
 
 
вылетает с ошибками. оттрейсить и отследить не удаётся.
стоит только закоментировать readData - всё работает великолепно через такую "прослойку" из одного конструктора (что логично).

в общем, не понимаю где собака зарыта.
гугл не помогает.


Название: Re: QFile наследник. проблема с readData(char *data,qint64 maxlen)
Отправлено: BRE от Июнь 07, 2010, 09:48
Метод read, использует readData.
У тебя рекурсия происходит.
Код
C++ (Qt)
qint64 QMyFile::readData(char *data, qint64 maxlen) {
   return QFile::readData(data,maxlen);
}