Что не так с этим шаблоном в Qt? QFile удаленный конструктор? - PullRequest
0 голосов
/ 17 марта 2020

Итак, это моя шаблонная функция. И я получаю сообщение об ошибке «вызов удаленного конструктора QFile». Как я могу это исправить? Или вы можете дать мне рекомендации, как мне лучше написать эту функцию в качестве шаблона?

template <class T>     // T shall be the name of a class
void example(QVector<T> &vec, const QString &fp, std::function<void(QFile)> func) //func is a method from a class
{
    QFile f(fp);
    if(!f.open(QIODevice::WriteOnly | QIODevice::Append) )
    {
        qDebug() << "File error" << f.error();
    }
    else
    {
        QThread::currentThread();
        for(T &tw : vec)
        {
            //tw.func(f);     
            func(f).tw;      **//call to deleted constructor of 'QFile'**                   
        }
    }
    f.close();
}

fun c это может быть, например:

void writeTeamData(QFile&);
void teamType::writeTeams(QFile &f)
{
    QTextStream out(&f);
    out.setCodec("UTF-16LE");
    out << teamId << "\t" << offsideTrap << "\t" << withoutBall << "\t" << formationId << "\t"
            << attack << "\t" << teamMentality << "\t" << attackTactic1 << "\t"
            << attackTactic2 << "\t" << defenseTactic1 << "\t" << defenseTactic2 << "\t" << captain << "\t"
            << penaltyTakerId << "\t" << kickTakerId << "\t" << leftCornerkickTakerId << "\t" << rightCornerkickTakerId << "\t"
            << numTransfersIn << endl;
}

1 Ответ

0 голосов
/ 17 марта 2020

Вы не можете скопировать QFile, так как конструктор копирования был удален. Измените подпись example вместо std::function<void(QFile&)> func.

...