Распределение QDataStream между членами

class ReadFile {
public:
void init();
QList<double> getData();
private:
QFile file;
QDataStream read;
double bufferFloat;
quint32 bufferInteger
}

Идея заключается в том, что при вызове init () файл должен быть открыт и перемещен в место, где начинаются данные. Теперь каждый раз, когда вызывается getData (), из файла следует читать кусок байтов.

Псевдокод выглядит так:

void ReadFile::init()
{
file.setFileName("...");
file.open(QIODevice::ReadOnly);
QDataStream read(&file);

// This chunk does some magic to find correct location by applying
// a readout (read >> bufferInteger) and check the result

// I can verify that at this point, if doing a readout (read >> bufferFloat)
// I get good data (i.e. corresponding to the file).
}

а также

QList<double> ReadFile::getData()
{
// Doing a (read >> bufferFloat) at this point will result in zeros.
}

Я понимаю, почему это происходит, так как read в init объявлен локально. Но как я должен распределить поток данных так getData можно забрать где init остановился? И следующий getData может забрать, где предыдущий остановился. Последовательность вызовов будет выглядеть так:

ReadFile file();
file.init();
file.readData();
file.readData();
file.readData();
file.readData();
//etc...

0

Решение

В вашем коде есть ошибка. Эта строка:

QDataStream read(&file);

определяет локальную переменную, которая переопределяет член класса. Вместо этого вы должны сделать это:

read.setDevice(&file);
2

Другие решения


По вопросам рекламы [email protected]