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

Langage C++ Discussion :

Redefinition of class MAIS avec #ifndef


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Redefinition of class MAIS avec #ifndef
    Bonjour à tous !

    Voila dans le cadre de l'un de mes projets (un jeu de Taquin), j'ai voulu créer une classe d'exception, s'occupant de gérer toutes les exceptions sur mon prog.

    Suite à ça, je commence à créer une, puis deux, puis trois classes, et là c'est le drame ! Le compilo déconne sur le main avec le message suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    In file included from Watcher.h:4:0,
                     from main.cpp:5:
    PuzzleException.h:13:7: error: redefinition of ‘class PuzzleException’
    PuzzleException.h:13:7: error: previous definition of ‘class PuzzleException’
    Le problème... C'est que j'ai mis les #ifndef, #define et #endif sur toutes mes classes !
    J'avoue que là... Je suis paumé !

    Voici ma classe d'exception :
    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
    #ifndef PUZZLEEXCEPTION_H
    #define PUZZLEEXCEPTION_h
     
    #include <iostream>
    #include <sstream>
    #include <exception>
     
    /*
      Je vous passe les commentaires Doxygen
      .
      .
    */
    class PuzzleException : public std::exception{
       public :
          inline PuzzleException(int id=0, std::string const& message= "") throw() : $identification(id), $message(message){}
     
         inline virtual const char* what() const throw(){
             std::ostringstream _oss;
             _oss << $identification;
             std::string _result = _oss.str();
             _result += " : ";
             _result += $message;
             return (_result.c_str());
          }
     
          inline virtual ~PuzzleException() throw(){}
     
       private:
          int $identification;
          std::string $message;
    };
    #endif /* PUZZLEEXCEPTION_H */
    (Excusez si c'est moche, mais c'est en cours d'écriture )

    Le header de ma classe Brick :
    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
    #ifndef BRICK_H
    #define BRICK_H
     
    #include "PuzzleException.h"
     
    class Brick{
       public:
          Brick(int val);
          int getValue();
          void setValue(int new_val);
     
       private:
          int $value;
    };
    #endif /* BRICK_H */
    Celui de ma classe Watcher :
    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
    #ifndef WATCHER_H
    #define WATCHER_H
     
    #include "PuzzleException.h"
    class Watcher{
       public:
          Watcher();
          int getNbMovePlayed();
          int getNbRemainingMove();
          void setNbRemainingMove(int val);
          void increaseMovePlayed();
     
       private:
          int $move_played;
          int $remaining_move;
    };
     
    #endif /* WATCHER_H */
    Et enfin mon Main :
    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
     
    #include <iostream>
    #include "PuzzleException.h"
    #include "Movement.h"
    #include "Brick.h"
    #include "Watcher.h"
     
    int main(){
        //Brick class test
        if(state == 0){
            Brick br(32);
            try{
               Brick br2(-42);
               state = 1;
               s = "Exception expected on Brick Construction";
            }
            catch(PuzzleException &e){}
            if(br.getValue() != 32){state = 1; s="Bad Brick::getValue()";}
            br.setValue(42);
            if(br.getValue() != 42){state = 1; s="Bad Brick::setValue()";}
        }
     
        //Watcher class test
        if(state == 0){
           Watcher wa;
           if(wa.getNbMovePlayed() != 0){state =1 ; s="Bad Watcher::getNbMovePlayed()";}
           for (int _i = 0 ; _i < 10 ; _i++){wa.increaseMovePlayed();}
           if(wa.getNbMovePlayed() != 10){state = 1; s="Bad Watcher::increaseNbMovePlayed()";}
           if(wa.getNbRemainingMove() != 0){state = 1; s="Bad Watcher::getRemainingMove()";}
           wa.setNbRemainingMove(42);
           if(wa.getNbRemainingMove() != 42){state = 1; s="Bad Watcher::setRemainingMove()";}
           try{
              wa.setNbRemainingMove(-42);
              state = 1;
              s = "Expect exception on Watcher::setRemainingMove()";
           }catch(PuzzleException &e){}
        }
     
        //Result
        std::cout << s << std::endl;
        return state;
    }
    Pareil, pardon aux familles si c'est moche, tout ça...


    Bref, Quelqu'un a-t-il une idée ?

    Walther Bishop

    PS : Etant nouveau posteur sur le forum, désolé si je me suis trompé de topic

  2. #2
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    C'est une erreur de typo qu'on peut chercher longtemps :
    #ifndef PUZZLEEXCEPTION_H
    #define PUZZLEEXCEPTION_h
    Le h minuscule devrait être majuscule.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci !!!! Décidément, j'ai passé trop de temps sur le code, me faut une pause

    Je pars me taper la tete contre les murs une centaine de fois et je met en résolu

    Walther Bishop

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/01/2014, 22h05
  2. Réponses: 0
    Dernier message: 05/04/2010, 11h47
  3. Réponses: 2
    Dernier message: 08/03/2010, 23h46
  4. Réponses: 1
    Dernier message: 04/11/2009, 15h33
  5. [XSD] Complexe de type all mais avec maxoccur
    Par Je@nb dans le forum Valider
    Réponses: 3
    Dernier message: 06/02/2005, 19h18

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