IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Probl�me de casting avec des g�n�riques


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET/C/C++
    Inscrit en
    Septembre 2007
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET/C/C++
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 71
    Par d�faut 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 : 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 :
    'static_cast' : cannot convert from 'TInternalItem' to 'TItem'
    Code (simplifi�) de la classe "TInternalItem":
    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; }
     
    };
    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.

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    static operator TType(OrderedElement<TType>^ obj)
    Pourquoi un OrderedElement<TType>^ et pas un TInternalItem ?

  3. #3
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET/C/C++
    Inscrit en
    Septembre 2007
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET/C/C++
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 71
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    static operator TType(OrderedElement<TType>^ obj)
    Pourquoi un OrderedElement<TType>^ et pas un TInternalItem ?
    Oups, petite erreur dans mon code.
    En fait, je le code ressemble plus � ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    static operator TType(InternalElement<TType>^ obj)
    La classe Container �tant appel�e comme suit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Container<int, InternalElement<int>> a = new Container<int, InternalElement<int>>();

Discussions similaires

  1. R�ponses: 4
    Dernier message: 22/10/2012, 10h28
  2. [d�butant] Probl�me de Cast avec des vector
    Par syl55 dans le forum Langage
    R�ponses: 9
    Dernier message: 20/05/2009, 10h04
  3. Probl�me de buffer avec des int et des char
    Par Lolita59 dans le forum R�seau
    R�ponses: 23
    Dernier message: 04/05/2006, 11h09
  4. Probl�me de "select" avec des valeurs a null
    Par SchpatziBreizh dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 01/07/2005, 16h08
  5. R�ponses: 6
    Dernier message: 19/10/2004, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo