Erreur: unqualified-id before '.' token c++

Résolu
Weshguy Messages postés 3 Date d'inscription vendredi 5 février 2016 Statut Membre Dernière intervention 22 février 2016 - 5 févr. 2016 à 17:35
Weshguy Messages postés 3 Date d'inscription vendredi 5 février 2016 Statut Membre Dernière intervention 22 février 2016 - 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.
A voir également:

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 5/02/2016 à 22:15
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
0
Weshguy Messages postés 3 Date d'inscription vendredi 5 février 2016 Statut Membre Dernière intervention 22 février 2016
5 févr. 2016 à 18:37
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 :).
0
Rejoignez-nous