首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtConcurrent给出错误

QtConcurrent给出错误
EN

Stack Overflow用户
提问于 2016-04-21 15:27:33
回答 1查看 301关注 0票数 0

根据下面的代码,我得到以下错误:

fileio.cpp:47: C3867:“FileIO::read”:非标准语法;使用“&”创建指向成员的指针 fileio.cpp:47: error: C2780:'QFuture QtConcurrent::map(Iterator,Iterator,MapFunctor)':期望提供3个参数-2

为什么会这样呢?

fileio.h

代码语言:javascript
复制
#ifndef FILEIO_H
#define FILEIO_H

#include <QtCore>

class FileIO : public QObject
{
    Q_OBJECT
    Q_DISABLE_COPY(FileIO)

signals:
    void finished();

public slots:
     Q_INVOKABLE void cancel();

private:
    void read(QString &fileURL);

public:
    FileIO(QObject *parent = 0);
    ~FileIO();


    Q_INVOKABLE void read_b64(const QString &fileURL);

};

#endif // FILEIO_H

fileio.cpp

代码语言:javascript
复制
#include "fileio.h"
#include <QFile>
#include <QDebug>
#include <QUrl>
#include <QThread>
#include <QtConcurrent>

FileIO::FileIO(QObject *parent)
    : QObject(parent)
{
}

FileIO::~FileIO()
{
}

void FileIO::read(QString &filePath)
{
    QByteArray finalBytes = QByteArray();

    filePath = QUrl(filePath).toLocalFile();

    QFile file(filePath);

    qDebug() << "file size: " << file.size();
    if (file.open(QIODevice::ReadOnly)) {
        finalBytes = file.readAll();
    }

    qDebug() << "byte size: " << finalBytes.length();

    //bytes.toBase64();
}


void FileIO::read_b64(const QString &filePath)
{

    QFutureWatcher<void> futureWatcher;
    QObject::connect(this, &FileIO::cancel, &futureWatcher, &QFutureWatcher<void>::cancel, Qt::UniqueConnection);
    QObject::connect(&futureWatcher, &QFutureWatcher<void>::finished, this, &FileIO::finished);


    QStringList filePaths;
    filePaths << filePath;

    QFuture<void> future = QtConcurrent::map(filePaths, this->read);

    futureWatcher.setFuture(future);
}
EN

回答 1

Stack Overflow用户

发布于 2016-04-21 15:39:02

this->read无效。您希望使用std::bind将非静态成员函数与实例绑定,创建一个可调用的,然后调用QtConcurrent::map的第一次重载,使用两个参数:

代码语言:javascript
复制
QFuture<void> future =
    QtConcurrent::map(filePaths, std::bind(&FileIO::read, this));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36774131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档