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>