Affichage d'une variable

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
Configuration: Windows XP
Firefox 3.0.10

3 réponses

  1. En enlevant les pointeurs, il m'affiche
    Adresses (michel)
    Adresse : -1 rue du . Code postal : 2009095316.
    0
    1. 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
      1. 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