Perte initialisation variable

Perte initialisation variable - C++ - Programmation

Marsh Posté le 13-01-2005 à 22:05:03    

Bonjour, alors voici mon pb :
 
pDecrypter = new Computer(duplicates)
un nouvel objet de type Computer est créé
Computer::Computer(bool dupes):
Decrypter(dupes), total(0), mySmartString(0)
 
{
}
cela appelle constr Decrypter::Decrypter(bool dupes):
round(0),
duplicates (dupes)
{
}
 
et mySmartString est initialisé à 0
 
Ensuite il ya pDecrypter->Play();
A ce moment là pdecrypter affiche seulement les variables protected(de la classe DECRYPTER)
cependant il va bien dans Computer::Play
if (!mySmartString)
      mySmartString = new SmartString(duplicates);
et là je me rends compte avec stupéfaction que mySmartString est rempli avec n'importe quoi!!! et ça me plante tout!! segmentation defaultPouvez vous m'aider et me dire ce qui s'est passé.
La variable total contient également n'importe quoi
 
D'autre part comment peut on initialiser un pointeur à 0 sans avoir appelé le constructeur?
 
 
Voici le code
la classe game.hpp
 

Code :
  1. #ifndef GAME_HPP
  2. #define GAME_HPP
  3. #include "defvals.hpp"
  4. #include "Gues1205.hpp"
  5. #include "SmartString1201.hpp"
  6. class Guess;
  7. class Decrypter;
  8. class Game
  9. {
  10. public:
  11.     Game();
  12.     ~Game()     {}
  13.      void Play();
  14.      static int howManyLetters;
  15.      static int howManyPositions;
  16. private:
  17.      void DisplayTime(int secs);
  18.      bool VerifyComputerChoices();
  19.      bool duplicates;
  20.      Decrypter *  pDecrypter;
  21. };
  22. #endif


 
la classe Decrypter.hpp

Code :
  1. #ifndef DECRYP_HPP
  2. #define DECRYP_HPP
  3. #include "defvals.hpp"
  4. #include "Gues1205.hpp"
  5. class Decrypter
  6. {
  7. public:
  8.    Decrypter(bool duplicates);
  9.    virtual ~Decrypter();
  10.   void Display( vector<char> charVec) const;
  11.   virtual bool HandleFlag(char flag) = 0 ;
  12.   virtual void Play() = 0 ;
  13.   virtual void ShowHelp() = 0;
  14.   void ShowHistory();
  15. protected:
  16.    bool duplicates;
  17.    vector<Guess> history;
  18.    int round;
  19. };
  20. #endif


la classe computer.hpp
 

Code :
  1. #ifndef COMPUTER_HPP
  2. #define COMPUTER_HPP
  3. #include "decrypter1101.hpp"
  4. class SmartString;
  5. class Computer : public Decrypter
  6. {
  7. public:
  8.    Computer (bool duplicates);
  9.    virtual ~Computer();
  10.    bool HandleFlag(char flag);
  11.    void Play() ;
  12. private:
  13.    void GenerateAGuess();
  14.    bool IsConsistent(vector<char> guess);
  15.    Guess OfferGuess();
  16.    void ShowHelp();
  17.    SmartString * mySmartString;
  18.    int total;
  19. };
  20. #endif

Reply

Marsh Posté le 13-01-2005 à 22:05:03   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed