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++ Discussion :

[heritage] cast


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut [heritage] cast
    Bonjour à tous,

    il m'arrive un truc stupide, et je ne parviens pas à trouver l'erreur:
    J'ai une classe B qui hérite de A. Une classe C qui possède une méthode f et une méthode g décrites ci-après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class B: public A
    {
    [...]
    };
     
    class C
    {
    [...]
    void f(A* a){};
    void g(B* b){f(b);} //l'erreur est sur cette ligne
    };
    Je ne comprends pas: normalement, quand une classe hérite d'une autre, la conversion des pointeurs se fait automatiquement. Mais là ça ne marche pas, je reçois l'erreur:
    error C2664: 'f' : cannot convert parameter 1 from 'const class B *' to 'const class A *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Précision: A et B appartiennent à des namespaces différents, mais je ne pense pas que cela pose problème.

    Avez-vous une idée de la raison pour laquelle cela ne fonctionne pas?

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    en effet, normalement le cast est implicit...

    essaie de partir d'une situation simple (pas de namespace) pour revenir à ta situation actuelle pour voir où ça plante
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut
    rhôôoo, j'ai trouvé, mais sincèrement, c'était fourbe ^^
    En fait, il me manquait le #include "B.h" et le compilo ne me l'avais pas dit! Aucun warning rien.
    Merci Swoog, c'est en suivant ton conseil que j'ai trouvé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. cast et heritage
    Par totoche dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 08/04/2008, 19h17
  2. pb cast heritage
    Par DEVfan dans le forum C++
    Réponses: 9
    Dernier message: 14/03/2008, 10h50
  3. Heritage et cast
    Par LordBob dans le forum C++
    Réponses: 7
    Dernier message: 23/04/2007, 08h37
  4. cast et heritage
    Par BigNic dans le forum C++
    Réponses: 11
    Dernier message: 30/03/2006, 08h07

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