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 :

Polymorphisme avec pointeur


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut Polymorphisme avec pointeur
    Bonjour à tous,

    Une petite question sans doute basique pour les gourous du C++:

    J'ai une classe abstraite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    namespace yz {
     
    class RayProvider {
     
    public:
     
        virtual Ogre::Ray getRay(const Ogre::Real x, const Ogre::Real y) = 0;
     
    };
     
    }
    Implémentée, par, par exemple Camera:

    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
     
    namespace yz {
     
    class Camera : public AbstractMovable, public RayProvider {
     
    public:
     
        Camera(Ogre::Camera* cam);
     
        Ogre::Ray getRay(const Ogre::Real x, const Ogre::Real y);
     
    //Autres fonctions et attributs membres.
    };
     
    }
    Ce code interagit avec du code java, et pour des questions de performance, je stock l'adresse du pointeur coté java, puis je le récupère avec un reinterpret_cast.

    Ceci fonctionne bien si mon appel fait un reinterpret cast en Camera, mais dès lors que je le fais un

    yz::RayProvider* provider = reinterpret_cast<yz::RayProvider*>(Adresse_du_pointeur_de_la_camera);

    Toute utilisation de ce provider provoque un crash.

    Je suppose que l'accès de la zone mémoire n'est alors pas correct (il appelle une autre méthode à la place), mais je ne sais pas quelle est la bonne méthode pour ne éviter de passer le type concret et ne manipuler que des RayProvider*

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    As-tu essayé de reinterpret_cast vers camera (celui-ci marche si j'ai compris) puis static_cast ce résultat vers le RayProvider ?
    En faisant un reinterpret_cast direct vers RayProvider, avec l'héritage multiple, les vtables etc, ca me parait un peu cavalier
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    C'était osé, j'avoue, en héritage simple ça fonctionne.

    J'ai fait hériter RayProvider d'AbstractMovable, ce qui est sémantiquement correct dans mon modèle et plus de soucis.

    Merci

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

Discussions similaires

  1. [WD9] Utiliser une fonction d'un ActiveX avec pointeur
    Par archimor dans le forum WinDev
    Réponses: 3
    Dernier message: 21/03/2006, 00h41
  2. petit problème avec pointeurs
    Par Kerod dans le forum C
    Réponses: 12
    Dernier message: 09/12/2005, 15h48
  3. Problème de gestion de chaînes avec pointeur
    Par LorDjidane dans le forum C
    Réponses: 18
    Dernier message: 19/10/2005, 15h40
  4. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2004, 19h49
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19

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