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 470
    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 470
    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