Probl�me de casting avec des g�n�riques
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:
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 :
Citation:
'static_cast' : cannot convert from 'TInternalItem' to 'TItem'
Code (simplifi�) de la classe "TInternalItem":
Code:
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; }
}; |
Pour info, si je remplace le static_cast par un safe_cast, le code compile mais n'appele pas mon op�rateur de conversion.
Ai-je oubli� quelque chose?
Merci.