Bonjour,
mon problème est le suivant :
j'ai une classe générique qui prends 2 paramètres :
le premier est un type d'objet à stocker, le second est la représentation interne cet objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 generic<typename TItem, typename TInternalItem> private ref class Container : public Generic::IEnumerator<TItem> { /*...*/ Generic::IEnumerator<TInternalItem>^ iterator; virtual TItem GetCurrentItem() = Generic::IEnumerator<TItem>::Current::get { return static_cast<TItem>(iterator->Current); } }
J'aimerai pouvoir retourner un objet contenu dans un TInternalItem sous la forme d'un TItem. Pour cela, dans la classe donné en paramètre TInternalItem, j'ai redéfini l'opérateur de cast, et j'utilise un static_cast.
Le prob es que cela ne compile pas et j'obtiens l'erreur suivante :
Code (simplifié) de la classe "TInternalItem":'static_cast' : cannot convert from 'TInternalItem' to 'TItem'
Pour info, si je remplace le static_cast par un safe_cast, le code compile mais n'appele pas mon opérateur de conversion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 generic<typename TType> private ref class InternalElement { internal: /*...*/ TType element; static operator TType(OrderedElement<TType>^ obj) { return obj->element; } };
Ai-je oublié quelque chose?
Merci.
Partager