我想知道为什么在创建 QFIle 的 QList 时必须将它们设为指针。例如我有一个类有一个 QList< QFile* >:
class Files
{
public:
void AddFile(QString newFile);
private:
QList<QFile*> files;
}
现在,当调用 AddFIle 时,它会执行以下操作:
QFile* newt = new QFile(new_File);
files += newf;
为什么我无法将 QList< QFile* > 更改为 QList< QFile >?每次我尝试这样做时,我都会收到错误消息:
QFIle::QFile(const QFile&) 是私有(private)的
这是我将代码更改为 QList< QFile > 时的样子:
class Files
{
public:
void AddFile(QString newFile);
private:
QList<QFile> files;
}
然后是.cpp
QFile newt(new_File);
files += newf;
最佳答案
在您的示例中,QFile
类型必须用作 *QFile
,因为作者将复制构造函数设为私有(private)。 QList
类型需要访问其模板参数的复制构造函数。无法访问QFile
的复制构造函数,但QFile*
类型具有可访问的复制构造函数。
这很可能是故意的。制作 QFile
对象的拷贝可能是不安全的。
关于c++ - 追加到 QList<QFile*>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22084921/