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



## axoubrice (27 Mars 2011)

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:ersonne (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


----------



## ntx (27 Mars 2011)

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 


```
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++


----------



## tatouille (27 Mars 2011)

```
#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 */
```


```
#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 */
```
:love: et j'ai evité le constructeur virtual et inline :mouais:, certains me font peur :afraid::afraid::afraid: , 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.


----------



## Gogaule (27 Mars 2011)

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  .

Cordialement.


----------



## tatouille (28 Mars 2011)

Gogaule a dit:


> Bonsoir à toutes et tous .
> 
> 
> Merci tatouille , mais si personne ne nous renseigne nous avons tendance à croire tout le monde .
> ...



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.


----------



## Gogaule (28 Mars 2011)

Bonjour à toutes et tous

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



tatouille a dit:


> 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.


----------



## tatouille (29 Mars 2011)

donc prend la porte en silence, c'est un minimum quand on vient de se prendre un coup de pied au cul.


----------



## Gogaule (29 Mars 2011)

Bonjour à toutes et tous.



> tatouille
> 
> 
> > donc prend la porte en silence, c'est un minimum quand on vient de se prendre un coup de pied au cul.


Quelle belle éducation ... Cela démontre une très grande intelligence . 

Petit pois , petit pois , ....   Pardon tatouille , tatouille .

Cordialement.


----------



## Anonyme (30 Mars 2011)

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 :


```
#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
```


```
#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;	
}
```


```
#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 :rateau:
Pas le temps de surcharger iostream...


----------

