C++ 错误:';的模板参数列表中参数1的类型/值不匹配;模板<;T级>;类QList';

C++ 错误:';的模板参数列表中参数1的类型/值不匹配;模板<;T级>;类QList';,c++,qt,qlist,C++,Qt,Qlist,我正在尝试创建一个QList,并在编译时出错! 这是我的密码: class Right { public: Right(); Right(const Right& other); Right(RightName name, QDate validity_date); bool isValid() const; bool operator==(const Right& other)const; Right &operator

我正在尝试创建一个QList,并在编译时出错! 这是我的密码:

class Right
{
public:
    Right();
    Right(const Right& other);
    Right(RightName name, QDate validity_date);

    bool isValid() const;
    bool operator==(const Right& other)const;
    Right &operator=(const Right &other);
    QString name;
    QDate expiryDate;
};
然后在QList中使用这个权限

class FileRightsRepo
{
public:
    FileRightsRepo(QString rightsPath);
    ~FileRightsRepo() { }
    // IRightsRepo interface
     QList<Right> getRights();

private:
    QString _rightsPath; // PATH to the file containing rights
};
class FileRightsRepo
{
公众:
FileRightsRepo(QString rightsPath);
~FileRightsRepo(){}
//IRightsRepo接口
QList getRights();
私人:
QString _rightsPath;//包含权限的文件的路径
};
我已经实现了这些类,但是当我尝试编译时,我得到了以下异常:

error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class QSet'
  QList<Right> getRights();
错误:“模板类QSet”的模板参数列表中参数1的类型/值不匹配
QList getRights();
这是getRights()的返回类型。 我已经阅读了Qt文档,它指定要使用的对象是可赋值类型,并且我已经实现了所需的函数


提前感谢您的帮助:)

这意味着您已在其他地方将
权限定义为变量、枚举常量或类似项。例如,这里有一个重现您的问题的测试用例:

class Right;
enum { Right };
QList<Right> getRights();
类权限;
枚举{右};
QList getRights();
您可以确保按照如下方式使用该类

QList<class Right> getRights();
QList getRights();

尽管最好使用IDE或修复问题的根源来追踪
Right
的其他定义。

为什么错误与QSet有关?你确定代码与错误对应吗?的确,一开始类的命名是正确的,但后来我用Qt Creator对它进行了重构以正确命名,但显然它重构了Q_CORE_EXPORT QTextStream&right(QTextStream&s);在qstreamtext.h中!