Bonjour,
Je souhaite faire une classe qui hérite de QList mais lorsque je compile j'ai pleins d'erreurs.
Voici la classe en question :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef MEDIALIST_H
#define MEDIALIST_H
#include <QStringList>
#include "media.h"
 
class MediaList : public QList<Media>
{
public:
    MediaList();
    MediaList(const QList<Media> & other);
    MediaList(const MediaList & other);
    virtual QStringList albums()const;
    virtual QStringList artists()const;
    virtual MediaList filter(const QString &str)const;
    virtual MediaList filterByTitle(const QString &title)const;
    virtual MediaList filterByArtist(const QString &artist)const;
    virtual MediaList filterByAlbum(const QString &album)const;
 
private:
    QStringList albumList;
    QStringList artistList;
};
 
#endif // MEDIALIST_H
Le cpp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "core/medialist.h"
 
MediaList::MediaList() : QList()
{
 
}
 
MediaList::MediaList(const QList<Media> &other) : QList(other)
{
    foreach(const Media &m,other)
    {
        if(!artistList.contains(m.artist()))
            artistList.append(m.artist());
        if(!albumList.contains(m.album()))
            albumList.append(m.album());
    }
}
 
MediaList::MediaList(const MediaList &other) : QList(other)
{
    this->artistList = other.artistList;
    this->albumList = other.albumList;
}
 
QStringList MediaList::albums() const
{
    return albumList;
}
 
QStringList MediaList::artists() const
{
    return artistList;
}
 
MediaList MediaList::filter(const QString &str) const
{
    MediaList list;
    foreach(const Media &m,filterByTitle(str))
    {
        if(!list.contains(m))
            list.append(m);
    }
    foreach(const Media &m,filterByArtist(str))
    {
        if(!list.contains(m))
            list.append(m);
    }
    foreach(const Media &m,filterByAlbum(str))
    {
        if(!list.contains(m))
            list.append(m);
    }
    return list;
}
 
MediaList MediaList::filterByTitle(const QString &title) const
{
    MediaList list;
    foreach(const Media &m,this)
    {
        if(m.title() == title)
            list.append(m);
    }
    return list;
}
 
MediaList MediaList::filterByArtist(const QString &artist) const
{
    if(!artistList.contains(artist))
        return MediaList();
 
    MediaList list;
    foreach(const Media &m,this)
    {
        if(m.artist() == artist)
            list.append(m);
    }
    return list;
}
 
MediaList MediaList::filterByAlbum(const QString &album) const
{
    if(!albumList.contains(album))
        return MediaList();
 
    MediaList list;
    foreach(const Media &m,this)
    {
        if(m.album() == album)
            list.append(album);
    }
    return list;
}
Et les erreurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
In*file*included*from*../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qiterator.h:45:0,
*****************from*../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qlist.h:45,
*****************from*../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/QList:1,
*****************from*../Player/core/medialist.h:3,
*****************from*../Player/core/medialist.cpp:1:
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:*In*instantiation*of*'QForeachContainer<const*MediaList**const>':
../Player/core/medialist.cpp:59:5:***instantiated*from*here
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:2341:32:*error:*'const*MediaList**const'*is*not*a*class,*struct,*or*union*type
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:2341:35:*error:*'const*MediaList**const'*is*not*a*class,*struct,*or*union*type
../Player/core/medialist.cpp:*In*member*function*'virtual*MediaList*MediaList::filterByTitle(const*QString&)*const':
../Player/core/medialist.cpp:59:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:59:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'e'
../Player/core/medialist.cpp:59:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:59:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:*In*member*function*'virtual*MediaList*MediaList::filterByArtist(const*QString&)*const':
../Player/core/medialist.cpp:73:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:73:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'e'
../Player/core/medialist.cpp:73:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:73:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:*In*member*function*'virtual*MediaList*MediaList::filterByAlbum(const*QString&)*const':
../Player/core/medialist.cpp:87:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:87:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'e'
../Player/core/medialist.cpp:87:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
../Player/core/medialist.cpp:87:5:*error:*'class*QForeachContainer<const*MediaList**const>'*has*no*member*named*'i'
In*file*included*from*../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qiterator.h:45:0,
*****************from*../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qlist.h:45,
*****************from*../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/QList:1,
*****************from*../Player/core/medialist.h:3,
*****************from*../Player/core/medialist.cpp:1:
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:*In*constructor*'QForeachContainer<T>::QForeachContainer(const*T&)*[with*T*=*const*MediaList**const]':
../Player/core/medialist.cpp:59:5:***instantiated*from*here
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:2338:81:*error:*using*invalid*field*'QForeachContainer<T>::i'
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:2338:81:*error:*request*for*member*'begin'*in*'((QForeachContainer<const*MediaList**const>*)this)->QForeachContainer<const*MediaList**const>::c',*which*is*of*non-class*type*'const*MediaList**const'
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:2338:81:*error:*using*invalid*field*'QForeachContainer<T>::e'
../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qglobal.h:2338:81:*error:*request*for*member*'end'*in*'((QForeachContainer<const*MediaList**const>*)this)->QForeachContainer<const*MediaList**const>::c',*which*is*of*non-class*type*'const*MediaList**const'
make:*Leaving*directory*`/home/andry/Player-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK__Release'
make:*****[medialist.o]*Error*1
Je n'ai aucune idée de ou ça pourrait venir.
Merci d'avance pour vos réponses.

Edit: Résolu fallait mettre *this et pas this dans les foreach