无法使用自定义类创建 QList
Can't create QList with custom class
我正在尝试创建自定义类对象的QList,但是出现错误:
错误: C2923:"QList":"读取"不是参数"T"的有效模板类型参数
我的代码(用户标头):
#ifndef USER_H
#define USER_H
#include <QString>
#include <QList>
#include "read.h"
class User {
protected:
int id;
QString username;
QString password;
QList<Read> readBooks;
bool accountDeleted;
bool admin;
public:
User();
User(int id, QString username, QString password,
QList<Read> readBooks, bool accountDeleted, bool admin);
~User();
const int getId();
void setId(int id);
const QString getUsername();
void setUsername(QString username);
const QString getPassword();
void setPassword(QString password);
const QList<Read> getReadBooks();
void setReadBooks(QList<Read> readBooks);
const bool isAccountDeleted();
void setAccountDeleted(bool accountDeleted);
const bool isAdmin();
void setAdmin(bool admin);
};
QDataStream &operator<<(QDataStream &out, const User &user);
QDataStream &operator>>(QDataStream &in, User &user);
#endif // USER_H
Qt给了我错误列表:
...user.h(13) : error C2065: 'Read' : undeclared identifier
...user.h(13) : error C2923: 'QList' : 'Read' is not a valid template type argument for parameter 'T'
...user.h(18) : error C2065: 'Read' : undeclared identifier
...user.h(18) : error C2923: 'QList' : 'Read' is not a valid template type argument for parameter 'T'
...user.h(27) : error C2065: 'Read' : undeclared identifier
...user.h(27) : error C2923: 'QList' : 'Read' is not a valid template type argument for parameter 'T'
...user.h(28) : error C2065: 'Read' : undeclared identifier
...user.h(28) : error C2923: 'QList' : 'Read' is not a valid template type argument for parameter 'T'
读取标头:
#ifndef READ_H
#define READ_H
#include <QDataStream>
#include "book.h"
#include "date.h"
class Read
{
protected:
//Book book;
Date addDate;
Date readDate;
bool stillReading;
public:
Read();
~Read();
//Read(Book book, Date addDate, Date readDate, bool stillReading);
//Book getBook();
//void setBook(Book book);
Date getAddDate();
void setAddDate(Date addDate);
Date getReadDate();
void setReadDate(Date readDate);
bool isStillReading();
void setStillReading(bool stillReading);
};
QDataStream &operator<<(QDataStream &out, const Read &read);
QDataStream &operator>>(QDataStream &in, Read &read);
#endif // READ_H
书被评论了,因为它也给出了错误...
...\user.h(13):错误 C2065:"读取":未声明的标识符
看起来在用户中不知道读取。也许date.h或book.h也包括user.h?(循环参考)
使用原型类可以帮助防止这种情况。
从文档中:
QList 的值类型必须是可分配的数据类型。
所以你需要一个复制构造函数。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- Qt C++ - 创建 QList<Myclass> - 不是参数 'T 的有效模板类型参数
- 创建返回 QList <int>的函数
- 警告从结构的 QList 中删除动态创建的结构
- 对QObject进行子分类并创建QList
- 如何创建具有修复索引的QList
- 在c++ /QT中创建抽象类对象的QList
- 从普通数组创建QList
- 无法使用自定义类创建 QList
- 如何创建一个QList的深度拷贝(Qt 4.8)