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