c++ - 追加到 QList<QFile*>

标签 c++ qt raii

我想知道为什么在创建 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/

相关文章:

android - Qt with android 5.9.0安装报错

c - 为什么 GCC/Clang 的清除属性不能与函数参数一起使用

c++ - 如何使用非平凡的析构函数防止未使用的变量警告

c++ - log4cXX 是否可以为每个新的一天创建一个新文件

c++ - 友元函数默认模板 : Intel ICPC warning

c++ - 如何更改 QTableWidget 标题的字体大小?

c++ - 如何强制使用 QT 进行蓝牙配对?

c++ - RAII如何应用于需要扩展初始化的类成员?

c++ - 这是为 float / double 通用化函数的正确方法吗

c++ - 从 `stdafx.h` 更改为 `pch.h`