problème de compilation avec xcode(c++)

axoubrice

Membre enregistré
27 Mars 2011
1
0
39
Bonjour ,
j'ai vraiment besoin d'aide car je n'arrive pas a comprendre pourquoi sous xcode je n'arrive pas a compiler correctement (j'ai pas mal de messages d'erreurs ) :
en résumé j'ai 3 fichiers Personne.h /Personne.cpp et main.cpp dont je joins les codes et le screenshot des messages d'erreur .
-------------------- Personne.h ----------------------
#ifndef PERSONNE
#define PERSONNE
//#include <iostream>
#include <string>

class Personne
{
private:
string Nom;
int Age;
int Taille;
public:
//Personne();
Personne(string nom,int age,int taille);
string LireNom();
int LireAge();
int LireTaille();
};

#endif
----------------------------------------
------------ Personne.cpp-------------------
#include "Personne.h"
#include <string>
#include <iostream>


Personne::Personne (string nom,int age,int taille)
{
Nom=nom;
Age=age;
Taille=taille;
}

string Personne::LireNom()
{
return Nom;
}

int Personne::LireAge()
{
return Age;
}

int Personne::LireTaille()
{
return Taille;
}
--------------------------------------
---------- main.cpp ----------------------
#include "Personne.h"
#include <iostream>
#include <string>

using namespace std;

int main (int argc, char * const argv[]) {
// insert code here...
string n;
int a,t;
cout<<"entrez le nom ,l'age et la taille : "<<endl;
cin>>n>>a>>t;
Personne p(n,a,t);
cout<<"------------------"<<endl;
cout<<"le nom: "<<p.LireNom()<<" age de "<<p.LireAge()<<" ans et de taille "<<p.LireTaille()<<endl;
cout<<"------ END ------"<<endl;

return 0;
}
-------------------------------------------------

je reste a votre disposition pour toutes indications qui pourraient m'aider a mieux comprendre ce qui se passe et ainsi éviter ces erreurs a l'avenir .
Merci d'avance
 
Dans ton fichier Personne.h tu utilises la classe 'string' sans avoir précisé le namespace 'std'.

PS : apprend à redéfinir une fonction pour afficher tes classes ;)

Bloc de code:
std::ostream& operator<<(std::ostream& dest, 
                         const Personne& toWrite);

Et oublie les nommage des fonctions à la "Windows", les majuscules en tête sont réservées aux noms des classes.

Et enfin change le titre de ton post, ce n'est pas un problème de Xcode mais une méconnaissance du C++ :D
 
Bloc de code:
#include <stdint.h>
#include <string>

#ifndef PERSON_H
#define PERSON_H

namespace MyNameSpace
{
    class Person
    {
    public:
        Person(std::string name, uint32_t age, double height);
        virtual ~Person() {}
        
        std::string name() { return m_name; }
        uint32_t age() { return m_age; }
        double height() { return m_height; }
        
        std::string setName(std::string& name) { m_name = name; }
        uint32_t setAge(uint32_t age) { m_age = age; }
        double setHeight(double height) { m_height = height; }
        
    private:
        std::string m_name;
        uint32_t m_age;
        double m_height;
    };
}

#endif // PERSON_H

/* EOF */
Bloc de code:
#include "Person.h"

using namespace MyNameSpace;

Person::Person(std::string name, uint32_t age, double height) :
    m_name(name),
    m_age(age),
    m_height(height)
{}

/* EOF */
:eek::eek::eek::eek::eek::eek::love: et j'ai evité le constructeur virtual et inline :mouais:, certains me font peur :afraid::afraid::afraid: :p:D, donc moralité commence par ecrire du C++ donc achete toi un bon bouquin et tu verras que ces problemes disparaitront quand tu maitriseras un minimum la synthax et c'est faux que l'on apprend en pissant et fesant l'usage extensif du copier coller d'exemples deci dela ecrits par des gens plus que douteux car exposant + de 20 mauvaises pratiques en moins de 4 lignes, de plus, faut etre assez surpuissant dans le domaine de la betise pour etre capable d'un tel exploit, donc tourne toi vers des gens qui sont des programmeurs serieux et qui savent transmettre leur connaissance.
 
Dernière édition:
Bonsoir à toutes et tous .
tatouille
fesant l'usage extensif du copier coller d'exemples deci dela ecrits par des gens plus que douteux car exposant + de 20 mauvaises pratiques en moins de 4 lignes, de plus, faut etre assez surpuissant dans le domaine de la betise pour etre capable d'un tel exploit, donc tourne toi vers des gens qui sont des programmeurs serieux et qui savent transmettre leur connaissance.

Merci tatouille , mais si personne ne nous renseigne nous avons tendance à croire tout le monde .
Je réalise des tutoriels , trouvé sur des sites apparemment très sérieux et je me trouve avec les mêmes problèmes ( tutoriel en partie incompréhensible et ou incomplet .) Notre seul salut les forums très sérieux :rolleyes: .

Cordialement.
 
Bonsoir à toutes et tous .


Merci tatouille , mais si personne ne nous renseigne nous avons tendance à croire tout le monde .
Je réalise des tutoriels , trouvé sur des sites apparemment très sérieux et je me trouve avec les mêmes problèmes ( tutoriel en partie incompréhensible et ou incomplet .) Notre seul salut les forums très sérieux :rolleyes: .

Cordialement.

ha qu'est ce que tu veux mon petit lapin en sucre chialeur, la bonne intention ne préjuge pas de la qualité de l&#8217;action, les actes de bonne volonté peuvent aboutir à des résultats catastrophiques, comme par exemple ta naissance.
 
Dernière édition:
Bonjour à toutes et tous

Bonjour tatouille ! (Un soupçon de politesse ..)

ha qu'est ce que tu veux mon petit lapin en sucre chialeur, la bonne intention ne préjuge pas de la qualité de l’action, les actes de bonne volonté peuvent aboutir à des résultats catastrophiques, comme par exemple ta naissance.

Moi à la différence de certain (certaine) , je le sais ..

Cordialement.
 
Au lieu de vous engueuler, ce serait mieux de l'aider.
Et puis c'est en faisant des erreurs que l'on apprend.

Exemple de correction :

Bloc de code:
#ifndef PERSONNE
#define PERSONNE

#include <string>

[COLOR="Lime"]using namespace std;[/COLOR]
[COLOR="DarkOliveGreen"]/*Indente ton code, change les noms de variables et de fonctions et met un espace après une virgule*/[/COLOR]

class Personne  {
	private:
		string m_nom;
		int m_age;
		int m_taille;

	public:
		Personne(string nom, int age, int taille);
		string getNom();
		int getAge();
		int getTaille();
};

#endif

Bloc de code:
#include "Personne.h"
[COLOR="Red"]#include <string>[/COLOR] [COLOR="DarkOliveGreen"]/*Déjà inclus...*/[/COLOR]
#include <iostream>

Personne::Personne (string nom, int age, int taille) {
	m_nom = nom;
	m_age = age;
	m_taille = taille;
}

string Personne::getNom() {
	return m_nom;	
}

int Personne::getAge() {
	return m_age;	
}

int Personne::getTaille() {
	return m_taille;	
}

Bloc de code:
#include "Personne.h"
#include <iostream>

using namespace std;

int main () {
	string n;
	int a, t;
	cout << "Entrez le nom, l'age et la taille : " << endl;
	cin >> n >> a >> t;
	Personne p (n, a, t);
	cout << "------------------" << endl;
	cout << "Le nom : "<< p.getNom() << " age de " << p.getAge() << " ans et de taille " << p.getTaille() << endl;
	cout <<"------ END ------"<< endl;

	return 0;
}

"p (n, a, t)" : c'est illisible. Change ça tout de suite :eek::rateau:
Pas le temps de surcharger iostream...