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 :

//no syntax error // no compilation error // error when launching the program


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Décembre 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert sécurité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 21
    Points : 9
    Points
    9
    Par défaut //no syntax error // no compilation error // error when launching the program
    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
     
     
        first class 
     
        /*
         * Arme.h
         *
         *  Created on: 11 déc. 2020
         *      Author: vincent
         */
     
         #ifndef ARME_H_
         #define ARME_H_
         #include <iostream>
         #include <string>
         class Arme {
     
        public:
        	Arme();
     
     
        		~Arme();
           		Arme(std::string nom, int degats);
           		void changer(std::string nom, int degats);
           		void afficher() const;
           		int getDegats() const;
     
     
           private :
           	std::string m_nom;
           	int m_degats;
     
           };
     
           #endif /* ARME_H_ */
    ------------------------------------------------

    ------------------------------------------------
    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
           /*
         * Arme.cpp
         *
         *  Created on: 11 déc. 2020
         *      Author: vincent
         */
        #include "Arme.h"
        using namespace std;
     
        Arme::Arme() : m_nom ("Epée rouillée"),m_degats (10)
        {
        }
     
     
     
        Arme::Arme(string nom, int degats) : m_nom (nom),m_degats (degats)
        {
        }
     
     
        void Arme::changer(string nom, int degats)
        {
    	    m_nom= nom;
    	    m_degats = degats;
        }
        void Arme::afficher()const
        {
        	cout<<" Arme : " << m_nom << "(Degats : "<< m_degats <<")"<< endl;
        }
        Arme::~Arme()
        {
     
        }
    ------------------------------------------------

    ------------------------------------------------
    seconde class

    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
        /*
         * Personnage.h
         *
         *  Created on: 11 déc. 2020
         *      Author: vincent
         */
     
        #ifndef PERSONNAGE_H_
        #define PERSONNAGE_H_
        #include <iostream>
        #include <string>
        #include "Arme.h"
     
        class Personnage
        {
     
        public:
        	Personnage();
        	Personnage(std::string monArme, int degatsArme);
        	~Personnage();
        	void recevoirDegats(int nbDegats);
        	void attaquer(Personnage &cible);
        	void boirePotionDeVie (int quantitePotion);
        	void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
        	bool estVivant() const;
        	void afficherEtat() const;
        private:
        	int m_vie;
        	int m_mana;
        	Arme *m_arme; //pointeur
        };
     
        #endif /* PERSONNAGE_H_ */
    ------------------------------------------------

    ------------------------------------------------
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
        /*
         * Personnage.cpp
         *
         *  Created on: 11 déc. 2020
         *      Author: vincent
         */
     
        #include "Personnage.h"
     
        using namespace std;
        void Personnage::recevoirDegats(int nbDegats)
        {
        	m_vie -= nbDegats;
        if (m_vie < 0)
        	{
        		m_vie = 0;
        	}
        }
        int Arme::getDegats() const
        {
        	return m_degats;
        }
     
        void Personnage::attaquer(Personnage &cible)
        {
        	cible.recevoirDegats(m_arme->getDegats());
        }
        void Personnage::boirePotionDeVie (int quantitePotion)
        {
        	m_vie += quantitePotion;
        	if (m_vie > 100)
        	{
        	m_vie = 100;
        	}
        }
        void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
        {
        	m_arme->changer(nomNouvelleArme, degatsNouvelleArme);
        	//pas dans le bouquin demander par le compilateur
        	//m_nomArme = nomNouvelleArme;
        	//m_degatsArme = degatsNouvelleArme;
        }
        bool Personnage::estVivant() const
        {
        	if (m_vie > 0)
        		{
        			return true;
        		}
        	else
        		{
        			return false;
        		}
        }
        Personnage::Personnage() :m_vie(100),m_mana(100),m_arme(0)
        {
        	// TODO Auto-generated constructor stub
     
        }
        Personnage::Personnage(string nomArme, int degatsArme): m_vie(100), m_mana(100),m_arme(0)
        {	//nomArme, degatsArme
        	m_arme = new Arme(nomArme,degatsArme );
        }
        void Personnage::afficherEtat() const
        {
            cout << "Vie : " << m_vie << endl;
            cout << "Mana : " << m_mana << endl;
            m_arme->afficher();
        }
     
        Personnage::~Personnage()
        {
        delete m_arme;
        }
    -------------------------------------------------------------------
    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
        #include <iostream>
            #include <string>
            #include "Personnage.h"
     
            using namespace std;
     
     
        int main()
        {
            // Création des personnages
            Personnage david, goliath("Epée aiguisée", 20);
     
            // Au combat !
            goliath.attaquer(david);
            david.boirePotionDeVie(20);
            goliath.attaquer(david);
            david.attaquer(goliath);
            goliath.changerArme("Double hache tranchante vénéneuse de la mort", 40);
            goliath.attaquer(david);
     
            // Temps mort ! Voyons voir la vie de chacun...
            cout << "David" << endl;
            david.afficherEtat();
            cout << endl << "Goliath" << endl;
            goliath.afficherEtat();
     
            return 0;
        }

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Le code est très discutable mais n'importe quel debugger, ou un peu de bon sens, montre très vite que m_arme de david est null, donc forcément quand tu veux l'utiliser ça crash.
    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
    Futur Membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Décembre 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert sécurité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 21
    Points : 9
    Points
    9
    Par défaut Merci beaucoup ! ça tourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Personnage::Personnage() :m_vie(100),m_mana(100),m_arme(0)
    {
    	 m_arme = new Arme();
     
    }

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Pourquoi m_arme() est-il un pointeur nu, si tu crées l'arme dans le constructeur?
    • Si le Personnage doit gérer la durée de vie de l'arme, son arme devrait être un pointeur intelligent.
    • Si le Personnage ne doit pas gérer la durée de vie de l'arme, alors OK pour le pointeur nu, mais il ne devrait pas créer d'arme dans son constructeur.
      • Si un Personnage ne peut pas être désarmé et doit toujours avoir une arme, alors il doit accepter (un pointeur vers) une arme en paramètre de son constructeur.
      • Si le personnage peut être sans arme, alors il faut tester ça avant de frapper.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Décembre 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert sécurité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 21
    Points : 9
    Points
    9
    Par défaut Bonjour
    oui je comprends la logique merci pour vos éclairages.
    Ce lien m'a été utile https://progmaph.epfl.ch/slides/tablet10.pdf
    cordialement
    Vincent
    problème résolu

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

Discussions similaires

  1. Error when loading the SDK : contenu non valide
    Par Little_Thing dans le forum Android
    Réponses: 4
    Dernier message: 01/09/2015, 14h27
  2. Syntax error à la compilation d'un programme
    Par Nicoleta Ionel dans le forum Linux
    Réponses: 2
    Dernier message: 02/05/2011, 23h42
  3. Compilation shader: syntax error
    Par zenux dans le forum OpenGL
    Réponses: 7
    Dernier message: 13/07/2010, 23h39
  4. Réponses: 2
    Dernier message: 01/04/2009, 21h58
  5. [Dev-Pascal] Syntax error : unit expected but program found
    Par [R]Viper dans le forum Autres IDE
    Réponses: 13
    Dernier message: 05/01/2007, 12h12

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