hsen
hsen

Reputation: 445

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

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 :)

Upvotes: 1

Views: 2079

Answers (1)

vitaut
vitaut

Reputation: 55655

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.

Upvotes: 1

Related Questions