Erreur: unqualified-id before '.' token c++ [Résolu]

Weshguy 3 Messages postés vendredi 5 février 2016Date d'inscription 22 février 2016 Dernière intervention - 5 févr. 2016 à 17:35 - Dernière réponse : Weshguy 3 Messages postés vendredi 5 février 2016Date d'inscription 22 février 2016 Dernière intervention
- 5 févr. 2016 à 18:37
Bonjour,

je me suis mis a la poo en c++ il y a pas longtemps et je rencontre un problème lorsque je compile:

"C:\Users\Moi\Documents\POO\main.cpp|9|error: expected unqualified-id before '.' token"

voici mon main.cpp:

#include <iostream>
#include "include/Perso.h"

using namespace std;

int main()
{
    cout << "RPG CONSOLE" << endl;
    Perso.create("Rafael");
    Perso.setLife(100);
    Perso.setWeapon("M16", 20);
    cout << Perso.getName() << "has" << Perso.getLife() << "life points" << "and he has a" << Perso.getWeaponName() << endl;
    return 0;
}


mon Perso.h:

#ifndef PERSO_H
#define PERSO_H
#include <string>


class Perso
{
    public:
        std::string create(std::string m_name);
        std::string setWeapon(std::string m_weaponname, int m_weapondamages);
        int setLife(int m_life);
        bool isAlive();
        void getLife();
        void getWeaponName();
        void getName();
        void getWeaponDamages();

    private:
        std::string m_name;
        std::string m_weaponname;
        int m_life;
        int m_weapondamages;
};

#endif // PERSO_H


et mon Perso.cpp:

#include <iostream>
#include <string>
#include "Perso.h"

Perso::Perso()
{
    std::string weaponname;
    int life;
    int weapondamages;
    std::string name;

    name = m_name;
    life = m_life;
    weapondamages = m_weapondamages;
    weaponname = m_weaponname;

    if(life <= 0)
    {
        life = 0;
        isAlive(false);
    }else(isAlive(true));

    getName()
    std::cout << name ;

    getLife()
    std::cout << life ;

    getWeaponDamages()
    std::cout << weapondamages ;

    getWeaponName()
    std::cout << weaponname ;
}


Si vous pouviez m'aider sa serais sympa, merci.
Afficher la suite 

Votre réponse

2 réponses

cptpingu 3808 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 24 septembre 2018 Dernière intervention - Modifié par cptpingu le 5/02/2016 à 22:15
0
Merci
Bonjour.

Tout d'abord, évite les using namespace, c'est bien crado. Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
Utilise des "const std::string&" en argument au lieu de "std::string" pour éviter une copie inutile.
Utilise des listes d'initialisation dans le constructeur plutôt que d'affecter des variables dans le corps du constructeur. Vu que tu ne fais rien avec ton constructeur, je te l'ai retiré dans ma correction.
Ensuite, tes getters ne devrait pas retourner void (ça n'a pas de sens), mais plutôt le type associé.

Correction:
#ifndef PERSO_H
#define PERSO_H

#include <string>

class Perso
{
public:
  void setName(const std::string& name);
  void setWeapon(const std::string& weaponname, int weapondamages);
  void setLife(int life);
  bool isAlive() const;
  int getLife() const;
  std::string getWeaponName() const;
  std::string getName() const;
  int getWeaponDamages() const;

private:
  std::string m_name;
  std::string m_weaponname;
  int m_life;
  int m_weapondamages;
};

#endif // PERSO_H


#include "Perso.hh"

void
Perso::setName(const std::string& name)
{
  m_name = name;
}

void
Perso::setWeapon(const std::string& weaponname, int weapondamages)
{
  m_weaponname = weaponname;
  m_weapondamages = weapondamages;
}

void
Perso::setLife(int life)
{
  m_life = life;
}

bool
Perso::isAlive() const
{
  return m_life > 0;
}

int
Perso::getLife() const
{
  return m_life;
}

std::string
Perso::getWeaponName() const
{
  return m_weaponname;
}

std::string
Perso::getName() const
{
  return m_name;
}

int
Perso::getWeaponDamages() const
{
  return m_weapondamages;
}


#include <iostream>
#include "Perso.hh"

int main()
{
  Perso perso;

  std::cout << "RPG CONSOLE" << std::endl;
  perso.setName("Rafael");
  perso.setLife(100);
  perso.setWeapon("M16", 20);
  std::cout << perso.getName() << " has " << perso.getLife()
     << " life points and he has a "
     << perso.getWeaponName() << std::endl;

  return 0;
}


Je te l'ai corrigé techniquement. Mais conceptuellement, ce n'est pas terrible. Les dégats de l'arme devrait être dans un objet arme possédé par le joueur, plutôt que ce soit le joueur qui possède les dégâts de l'arme.

PS: On dit "ça" et non "sa". C'est fou ce que l'on voit comme personne ne sachant pas différencier ces deux cas, alors que c'est du niveau primaire... http://www.francaisfacile.com/exercices/exercice-francais-2/exercice-francais-26659.php


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
Weshguy 3 Messages postés vendredi 5 février 2016Date d'inscription 22 février 2016 Dernière intervention - 5 févr. 2016 à 18:37
0
Merci
Merci pour ta réponse rapide et pertinente,

Maintenant la compilation marche ;)

Mais je tient à préciser que le "sa" est du au fait que j'ai changé de clavier QWERTZ a QWERTY (que je trouve beaucoup mieux d'ailleurs) et que je ne trouve pas le Ccedille sur mon clavier :).
Commenter la réponse de Weshguy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.