Bonjour,

J'essaie de faire une classe utilisant l'opérateur d'indexation [] mais avec un template qui conditionne le type de retour. Les données sont de type QVariant, et donc l'idée serait de faire un truc du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
int opt1=myclass<QVariant::Int>[index];
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyClass
{
        template<typename T>
        T&           operator []  (int option)
        {
            QVariant var;
            if(m_options.contains(option))
                return m_options[option].value<T>();
            else
                return var.value<T>();
        }
private:
    QList<QVariant> m_options;
}
Quand j'essaie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
int opt1=myclass<QVariant::Int>[1];
ou même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
int opt1=myclass.operator[]<QVariant::Int>(1);
Mais le compilateur (MinGW) ne reconnaît pas la surcharge et me met :
no match found ... for operator[]

D'où la question : est-ce possible de surcharger l'opérateur [] avec un template ? ou est-ce que j'ai mal fait un truc
Merci d'avance
RV