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 :
int opt1=myclass<QVariant::Int>[index];
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
int opt1=myclass<QVariant::Int>[1];
ou même
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
Partager