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

Langage C++ Discussion :

impossible de convertir de 'CCelluleFile<modele> *' en 'CNumero *' c:


Sujet :

Langage C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 0
    Points
    0
    Par défaut impossible de convertir de 'CCelluleFile<modele> *' en 'CNumero *' c:
    Bonjour à tous, je ne suis pas un habitué des forum de programmation, mais je me présente. Je suis un étudiant qui suis présentement une technique en programmation. Je suis en se moment entrain de voir le language de programmation C++ orienté objet et nous avons vu jusqu'à maintenant : Les piles, les Files, les templates... Je dois présentement coder une file orienté objet, mais lorsque j'essai de défiler quelque chose, j'ai le message suivant.

    Error C2440: 'initialisation'*: impossible de convertir de 'CCelluleFile<modele> *' en 'CNumero *'

    PS : J'ai encore de la difficulté en se qui concerne les pointeurs. Je comprend leurs utilités, mais j'ai de la difficulté à les déclarer, bref je ne sais pas si mon problème peut venir de ça, mais j'en doute un peu.

    Bon, pour en revenir avec ma file linéaire, je n'arrive pas à comprendre pourquoi j'ai ce problème. Bon oui je comprend que mon tempNum est déclarer en tant que modele et qu'alors, elle peut être affectée que d'une valeur de ce type, mais bon.

    Présentement j'essai de faire quelque chose de train simple quand je défile, voici le code de ma file

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class CFile{
    private:
    	CCelluleFile<modele> *m_pTete, *m_pQueue;
    public:
    	modele Defiler(){
    		if (m_pQueue != nullptr){
    			modele tempNum = m_pQueue;
    			m_pTete = m_pTete->ObtenirSuivant();
    			return tempNum;
    		}
    	}
    };
    j'ai aussi un fichier .h nommé CNumero pour lui envoyer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class CNumero{
    private:
    	int Numero;
    public:
    	CNumero(int _Numero){
    		Numero = _Numero; //envoye la valeur de numero reçus en paramètre dans ma donnée membre privé
    	}
     
    	//permet de retourner ma valeur numero
    	int RetourerNumero(){
    		return Numero;
    	}
    };
    Comme d'habitude, mon problème doit être quelque chose de très simple, mais je n'arrive pas à voir quoi En espèrent avoir de l'aide
    Merci à vous

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Quand tu as un message d'erreur, ce serait sympa de nous dire sur quelle ligne, plutôt que de nous laisser chercher. De plus, tu as un peu trop coupé ton code, ce qui nous oblige à faire des suppositions.

    Là, j'imagine que c'est sur modele tempNum = m_pQueue;, en supposant que modele est en fait un paramètre template de CFile (qui serait alors un template).

    Le message te dis que m_pQueues est de type CCelluleFile<modele> *, et que tu tentes d'assigner le résultat à une variable de type modele. Mais comme je n'arrive pas à deviner ce que tu veux faire, et que tu n'as pas montré la classe CCelluleFile, j'ai du mal à suggérer une alternative. J'ai l'impression que tu veux accéder à la valeur stockée dans la cellule, alors que là tu as accès à un pointeur sur la cellule en entier. Peut être un code comme modele tempNum = m_pQueue->recupererLaValeur(); ?

    Sinon, le fait que tu récupères la valeur de queue, mais que tu modifies le pointeur de tête, me semble très suspect.



    PS: Pourquoi commencer tes noms de classes par C ? Ça alourdi l'écriture en n'apporte rien....
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Oups, effectivement j’aurais du donner mon code de CCelluleFile. Je vais regarder se soir si je ne trouve pas la solution. Pour l'instant je peux donner le code de CCelluleFile. Pour se qui est de la ligne d'erreur, c'est la ligne #7 de mon CFile : modele tempNum = m_pQueue;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    template <class modele>
    class CCelluleFile{
    private:
    	modele Element;
    	CCelluleFile<modele>* Suivant;
    public:
    	CCelluleFile(modele _Element, CCelluleFile<modele>* _Suivant){
    		Element = _Element;
    		Suivant = _Suivant;
    	}
     
    	void DefinirSuivant(CCelluleFile<modele>* _Suivant){
    		Suivant = _Suivant;
    	}
     
    	CCelluleFile<modele>* ObtenirSuivant(){
    		return Suivant;
    	}
     
    	modele ObtenirELement(){
    		return Element;
    	}
    };
    Pour se qui est du C devant mes classes, se sont des normes de programmation instauré dans mon cours.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/08/2007, 11h57
  2. Réponses: 2
    Dernier message: 19/05/2007, 20h51
  3. Impossible de convertir une base 2003 vers 2000
    Par soso78 dans le forum Access
    Réponses: 4
    Dernier message: 07/01/2007, 11h04
  4. Impossible de convertir les sauts de lignes \n en <br> dans une jsp.
    Par michaelcourcy dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 28/11/2006, 17h32
  5. [XPATH] Impossible de convertir #BOOLEAN en un NodeList
    Par claudyyyyy dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 08/02/2006, 16h00

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