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 :

MSVC 2005 Buggé


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut MSVC 2005 Buggé
    Bonjour,
    Voici un bug sur MSVC

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include "stdafx.h"
     
    class TESSAI
    {
    public:
    	void printer();
    };
     
    class TESSAI2 : public TESSAI
    {
    public:
    	bool b;
    	virtual void printer();
    };
     
    void TESSAI::printer()
    {
    	printf("Premier objet\n");
    }
     
    void TESSAI2::printer()
    {
    	printf("Dérivé\n");
    	TESSAI::printer();
    }
     
    typedef TESSAI* PESSAI;
    typedef TESSAI2* PESSAI2;
     
    void callprinter(PESSAI ess)
    {
    	ess->printer();
    }
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	PESSAI2 ess2;
    	ess2=new TESSAI2;	
    	callprinter(ess2);
    	TCHAR tmp[128];
    	scanf("%s",tmp);
    	return 0;
    }
    Il doit m'afficher
    Dérivé\n
    et
    Premier objet\n
    car je lui passe un classe TESSAI2 "callprinter(ess2) qui est PESSAI2

    Je passe la valeur ess2 qui est PESSAI2 ET NON PESSAI ;
    et il m'affiche seulelemtn "Premier Objet"
    Visual Studio ne prend pas en charge les dérivations d'objet !
    donc cst buggé !


    La solution serait de
    void callprinter(PESSAI2 ess) ; evidemment ,
    mais je refuse cet solution , car je vais developper un logiciel avec des
    interface IHM dérivé sur une seule objet comme fait le MFC ;
    Explication d'exemple
    Sur un objet il y a un événement WM_PAINT appeler , le logiciel va rechercer l'objet grace au tag et identificateur d'objet et appelé la fonction
    OnPaint de l'objet.
    Solutuin Utiliser MFC , mais je refuse je fonctionne comme ça pour mon future logiciel IHM

    Donc comment je fais ?

    Merci bcp

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Points : 444
    Points
    444
    Par défaut
    Hello,



    Sinon je pense qu'en déclarant la méthode virtuelle dans la classe de base ça fonctionnerait un poil mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class TESSAI
    {
    public:
    virtual void printer();
    };

  3. #3
    Membre régulier Avatar de cynique
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 60
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par sivaller Voir le message
    Bonjour,
    Voici un bug sur MSVC
    Mais non, c'est un bug sur ton code.

    Citation Envoyé par sivaller Voir le message
    #include "stdafx.h"

    class TESSAI
    {
    public:
    void printer();
    };
    Voici ton erreur. Tu dois écrire le "virtual" sur la classe de base, et puis le fonction "printer()" de la classe derivée surchargera le "printer()" de la classe base.

  4. #4
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Y'en a qui n'ont pas froid aux yeux ! Visual buggé !
    Effectivement, il manque un "virtual", et je t'encourage donc à aller regarder les cours de C++ proposé par DVP.com !!!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut Corrigé
    Ca marche avec la méthode virtuel ;

    Par contre ce serait pour exporter TESSAI2 sur une DLL,
    comment on peux faire ?

    Merci

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par poukill Voir le message
    Y'en a qui n'ont pas froid aux yeux ! Visual buggé !
    Ne soyons pas mesquins: il arrive de temps en temps qu'on s'aperçoive que Visual C++ 2005 est vraiment buggé.

    (I know, I'm shameless)
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Ne soyons pas mesquins: il arrive de temps en temps qu'on s'aperçoive que Visual C++ 2005 est vraiment buggé.

    (I know, I'm shameless)

    C'est pas plutôt parce que tu fait des spécialisations partielle de template?

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Pour le FizzBuzz

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include <iostream>
     
    template <int n> 
    struct fizzbuzz : fizzbuzz<n-1>
    {
      fizzbuzz() 
      { 
          const bool fizz = Fizz<n%3>();
          if (  Buzz<n%5>() || fizz)
          {
                std::cout << std::endl; 
          }
          else
          {
            std::cout << n << std::endl; 
          }
      }
     
      template <int n>
      bool  Fizz()
       {
           return false;
       }
     
      template<>
      bool Fizz<0>()
        {
            std::cout << "Fizz"; 
            return true;
        }
     
      template <int n>
      bool  Buzz()
       {
           return false;
       }
     
        template<>
        bool Buzz<0>()
        {
            std::cout << "Buzz"; 
            return true;
        }
    };
    template <> 
    struct fizzbuzz<0> 
    {
        fizzbuzz() 
          { 
                std::cout << 0 << std::endl; 
          }
    };
     
    int main()
    {
      fizzbuzz<100> fb;
    }

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Mongaulois Voir le message

    C'est pas plutôt parce que tu fait des spécialisations partielle de template?
    Je n'ai jamais dit que le code n'était pas marrant. Mais si je me rappelle les tests effectués, ça passe avec comeau C++ et les dernières générations de g++. Le problème est dans la récursivité - que Visual C++ n'arrive pas à gérer correctement - et dans les spécialisations partielles - que Visual C++ est capable de gérer correctement dans certaines circonstances. Mais au final, il s'agit quand même d'un problème de VC++ - qui ne devrait pas planter.

    Certes, il y a des manières plus simples d'écrire ce programme, mais je cherchais surtout une manière de l'écrire qui n'avait pas de sens. Je suis content, j'ai trouvé.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Je n'ai jamais dit que le code n'était pas marrant.
    Certes il est assez fun . Je ne savait pas que certain compilot acceptais déjà les spécialisations partielle.

    Mais au final, il s'agit quand même d'un problème de VC++ - qui ne devrait pas planter.
    Mais euh. Le pauvre c'est pas ça faute.. C'est cro$oft qui la fait

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

Discussions similaires

  1. Big Bug sur MSVC 2005 ! ne trouve pas la déclaration
    Par sivaller dans le forum Visual C++
    Réponses: 1
    Dernier message: 30/10/2009, 01h10
  2. [MSVC 2005] Débogueur sur une lib : perte de fonctionalités
    Par Ange_blond dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/05/2009, 11h56
  3. Migration vers MSVC 2005
    Par ali.tn dans le forum Visual C++
    Réponses: 3
    Dernier message: 21/11/2007, 14h46

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