Affichage d'une variable

Fermé
Fiskal Messages postés 25 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 5 septembre 2010 - 30 mai 2009 à 10:05
Fiskal Messages postés 25 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 5 septembre 2010 - 30 mai 2009 à 11:29
Bonjour,
j'ai crée un petit programme pour voir si j'avais compris les classes. J'ai eu quelques erreurs que j'ai corrigées. L'essai est comme un petit carnet d'adresse. On affiche le contenu avec XXX.afficher(); et on le modifie après avec XXX.modifier();.

Tout ça marche. Le problème, c'est lors de l'affichage : au lieu de m'écrire
Adresses (michel)
Adresse : 0xffffffff rue du 0x77be2850. Code postal : 2009095316.

Au lieu d'écrire :
Adresses (michel)
Adresse : 44 rue du maitre. Code postal : 67117.
De même pour les autres.

Que faire ?

Voici mes codes :

main.cpp :
#include <iostream>
#include "infos.h"

using namespace std;

int main()
{
    infos michel("maitre", 44);
    infos tutur("lilas", 9);
    infos paul("lilas", 30);
    cout << "Adresses (michel)" << endl;
    michel.afficher();
    cout << "Changement : "<< endl;
    michel.changer();
    cout << "Nouvelles Adresses"<< endl;
    michel.afficher();
    system("PAUSE");
    system("cls");
    cout << "Adresses (Arthur)" << endl;
    tutur.afficher();
    cout << "Changement : "<< endl;
    tutur.changer();
    cout << "Nouvelles Adresses"<< endl;
    tutur.afficher();
    system("PAUSE");
    system("cls");
    cout << "Adresses (paul)" << endl;
    paul.afficher();
    cout << "Changement : "<< endl;
    paul.changer();
    cout << "Nouvelles Adresses"<< endl;
    paul.afficher();
    system("PAUSE");
    return 0;
}


infos.cpp
#include <iostream>
#include "infos.h"
#include <string>

using namespace std;

infos::infos() : m_codepostal(67117)
{

}

infos::infos(std::string m_rue, int m_numeroBatiment)
{


}

infos::~infos()
{



}

void infos::afficher()
{
    cout << "Adresse : " << m_numeroBatiment << " rue du " << m_rue << ". Code postal : " << m_codepostal << "." << endl;
}

void infos::changer()
{
    cout << "Changement de rue, entrez le nouveau nom : " << endl;
    cin >> *m_rue;
    cout << "Changement du numéro du bâtiment, entrez le nouveau numéro : " << endl;
    cin >> *m_numeroBatiment;
}


infos.h
#ifndef DEF_INFOS
#define DEF_INFOS

class infos
{
    public:
    infos();
    infos(std::string m_rue, int m_numeroBatiment);
    ~infos();
    void afficher();
    void changer();

    private:
    int m_codepostal;
    std::string *m_rue;
    int *m_numeroBatiment;
};
#endif


Je travaille avec Code::Blocks 8.02 avec le compilateur GNU GCC.
Je suis sous Win XP

Merci d'avance

Fiskal

3 réponses

Utilisateur anonyme
30 mai 2009 à 10:55
Salut

J'ai juste lu en travers.

Adresse : 0xffffffff rue du 0x77be2850. Code postal : 2009095316.

= ton pointeur pointe l'adresse, or tu dois retourner sa valeur :)

ex :

long test = 10;
long *pointeur = &test;

printf("%ld", pointeur); ==> affiche l'adresse
printf("%ld", *pointeur); ==> affiche 10
0
Fiskal Messages postés 25 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 5 septembre 2010
30 mai 2009 à 11:26
Merci pour ta réponse si rapide, mais il n'y a qu'un problème, l'ex que tu me donnes, c'est du C, mon code, c'est du C++.
0
Fiskal Messages postés 25 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 5 septembre 2010
30 mai 2009 à 11:29
En enlevant les pointeurs, il m'affiche
Adresses (michel)
Adresse : -1 rue du . Code postal : 2009095316.
0