Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QFile类嵌套的一个问题_C++_Qt_Qfile_Qvector_Qtextstream - Fatal编程技术网

C++ QFile类嵌套的一个问题

C++ QFile类嵌套的一个问题,c++,qt,qfile,qvector,qtextstream,C++,Qt,Qfile,Qvector,Qtextstream,当我定义一个类似下面的结构时,问题就出现了 struct TInputData { QString filename; QFile file; QTextStream stream; }; 然后我将其放入QVector容器中,如下所示: QVector<struct TInputData> input(DATA_SOURCE_END); QVector输入(数据源端); 之后,我调用向量成员字段的一些方法: for(int i

当我定义一个类似下面的结构时,问题就出现了

struct TInputData
{
    QString      filename;
    QFile        file;
    QTextStream  stream;
};
然后我将其放入QVector容器中,如下所示:

QVector<struct TInputData> input(DATA_SOURCE_END);
QVector输入(数据源端);
之后,我调用向量成员字段的一些方法:

for(int i = 0; i < DATA_SOURCE_END; ++i)
{
    input[i].filename = QString(argv[i + 1]);
    input[i].file.setFileName(input[i].filename);
    if (!input[i].file.open(QIODevice::ReadOnly))
    {
        QDebug(QtCriticalMsg) << "Failed to open input file: " << input[i].filename << "!!!";
        return a.exec();
    }
    input[i].stream.setDevice(&input[i].file);
    qDebug() << "Connected to input file " << input[i].filename;
}
for(int i=0;iQVector输入(数据源端)
更改为
QVector输入(数据源端)

QVector
需要复制其内容,但是
QFile
的复制构造函数是私有的,不能复制

使用指针时,您应该手动新建和删除TInputData对象,也可以使用智能指针

您可以尝试
QSharedPointer

您的向量将是
QVector输入(数据源端)

这意味着
QFile
对象不可复制,这显然使它们很难放入向量中。如果您准备好管理内存,可以使用指针。某种智能指针将是最简单的答案。谢谢,我将尝试使用
TInputData
指针。非常感谢!您能推荐一些吗阅读有关智能指针的信息(可能有使用示例)?
/usr/include/qt4/QtCore/qfile.h:209: error: 'QFile::QFile(const QFile&)' is private 
within this context <at line where struct TInputData is declared>