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 :

Probleme cast vers type reel.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut Probleme cast vers type reel.
    Bonjour,

    Je dispose d'une class abstraite AThread:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class AThread
    {
      private:
        bool _started;
        pthread_t _thread;
     
      public:
        AThread();
        virtual ~AThread();
        void start();
        virtual void callback() = 0;
    };
    La methode start est chargée de lancer le thread.
    La methode callback doit etre implemente par les class qui herite de AThread; celle-ci est la methode que le thread doit appeller.

    Pour ce faire, j'ai cree une fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    extern "C"
    {
      void *thread_func(void *mem)
      {
         AThread *obj;
     
         obj = static_cast<AThread *>(mem);
         obj->callback();
         return (NULL);
      }
    }
    Cette fonction est donc appellee comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void AThread::start()
    {
      if (!this->_started)
      {
        this->_started = true;
        pthread_create(&this->_thread, NULL, thread_func, this);
      }
    }
    Cependant lors d'un appel a la methode start, la methode thread_func appelle la methode callback de l'objet AThread dans tous les cas.
    J'ai essaye de static_cast ver le type reel, de passer la reference du type reel a thread_func mais le resultat reste le meme:

    pure virtual method called
    terminate called without an active exception
    Aborted

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Tu n'essaierais pas d'appeler start dans le constructeur de AThread par hasard, c'est à dire avant que le constructeur de la classe dérivée n'ait terminé d'instancier l'objet ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut
    Citation Envoyé par cob59 Voir le message
    Tu n'essaierais pas d'appeler start dans le constructeur de AThread par hasard, c'est à dire avant que le constructeur de la classe dérivée n'ait terminé d'instancier l'objet ?
    Bien essaye mais non. Merci quand meme.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    On peut voir le constructeur de AThread et celui de la classe dérivée posant problème ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut
    Citation Envoyé par cob59 Voir le message
    On peut voir le constructeur de AThread et celui de la classe dérivée posant problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AThread::AThread()
    :_started(false)
    {
     
    }
    Le constructeur de la classe qui herite de AThread ne fait absolument rien.

  6. #6
    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
    Est-ce qu'un dynamic_cast vers le type réel fonctionne ?
    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.

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

Discussions similaires

  1. [AC-2010] Probleme CAST nombre dans requête SQL vers Access
    Par GreatTeacherOnizuka dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/07/2014, 14h12
  2. Cast vers un type plus grand et perte de precision
    Par Kaluza dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2012, 11h12
  3. Réponses: 2
    Dernier message: 07/03/2007, 14h27
  4. Réponses: 2
    Dernier message: 30/08/2004, 14h48
  5. Probleme CAST
    Par cedric31 dans le forum SQL
    Réponses: 2
    Dernier message: 16/02/2004, 10h46

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