error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class QList'

こ雲淡風輕ζ 提交于 2019-12-31 03:43:05

问题


I'm trying to have a QList and getting the error when compiling! Here's my code:

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;
};

And then using this Right in a QList

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

private:
    QString _rightsPath; // PATH to the file containing rights
};

I've implemented these classes, but when i try to compile, i get the below exception:

error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class QSet'
  QList<Right> getRights();

Which is the return type of getRights(). I've read Qt documentation and it specifies that the object to be used is of assignable type and i've implemented the needed functions.

Thanks for the help in advance :)


回答1:


It means that you have Right defined somewhere else as a variable, enumeration constant or similar. For example here's a test case that reproduces your problem:

class Right;
enum { Right };
QList<Right> getRights();

You can make sure that you use the class as follows

QList<class Right> getRights();

although it would be better to track down the other definition of Right using an IDE or something else and fix the source of the problem.



来源:https://stackoverflow.com/questions/33421058/error-type-value-mismatch-at-argument-1-in-template-parameter-list-for-templat

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!