IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Utilisation de Pointeurs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Par défaut Utilisation de Pointeurs
    Salut Bonjour!!! J'ai ecrit le code suivant....

    Il recoit le nom prenom et le numero matricule d'un etudiant entre par l'utilisateur et le resort sur un tableau....si l'utilisateur entre le caractere '-'...dans le Nom il sort du programme....dans cet exemple j'ai juste pris un etudiant en exemple.

    Lorsque je compile je recoit un message d'erreur comme quoi:
    - nom prenom et matricule sont private....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    #include<iostream>
    #include<string>
     
    using namespace std;
     
    class Teilnehmer {                 //Anfang der Klasse deklaration
    public:                          // Begin des Öffentlichen Abschnitts
    Teilnehmer();                    //Deklaration der standard Konstruktor
    ~Teilnehmer();                   //Deklaration der standard destruktor
    void Set (char Nachname[], char Vorname[], int Matrikelnummer);   // Zugriffsfuntion
    void print();
     
    private:		                 // Beginn des Privaten Abschnitts
    int   Matrikelnummer_in;              //Elementvariable
    char  Vorname_in[30];
    char  Nachname_in[30];
    };
     
    Teilnehmer::Teilnehmer(){     //Definition der standard konstruktor
        int  Matrikelnummer = 0;         // Initialisation der variable Matrikelnummer
        char Vorname = {'0'};           // Initialisation der variable Vorname
        char Nachname = {'-'};          // Initialisation der variable Nachname
        {
            cout << "Konstruktor \n";
        }
    }
     
    Teilnehmer::~Teilnehmer(){}      //deklaration der destruktor
     
    void Teilnehmer:: Set(char Nachname[], char Vorname[], int Matrikelnummer ){    //Definition eine funktion des klasses
    	 char  Nachname_in[30];
    	 char  Vorname_in[30];
    	 int   Matrikelnummer_in;
     
    	 *Nachname_in = *Nachname;
    	 *Vorname_in = *Vorname;
         Matrikelnummer_in =  Matrikelnummer;
     
     
     
     
    }
     
    void Teilnehmer::print(){
    	  Teilnehmer *COLLEGE;
     
     
    	  cout << "------------------------------------------------------------------------------------"<<endl;
    	  cout << "*                   |                                     |                        *"<<endl;
    	  cout << "*    Nachname       |              Vorname                |     Matrikelnummer     *"<<endl;
    	  cout << "*                   |                                     |                        *"<<endl;
          cout << "------------------------------------------------------------------------------------"<<endl;
     
    	  cout<< COLLEGE->Nachname_in << COLLEGE->Vorname_in << COLLEGE->Matrikulnummer_in;
    	  cout<<endl;
     
    }
     
     
     
    int main (){
     
    	int i = 0;                 // Deklaration un initialisation eine Ganzahl
        Teilnehmer *COLLEGE = new Teilnehmer;
        char Nachname[30];
        char Vorname[30];
        int Matrikelnummer = 0;
    	while(i<1){                 //Eingabe des Teilnehmers Daten Wenn Beim Nachname keine Minus Zeichen gibt
     
    	cout << "Geben Sie Bitte  Nachname, Vorname und die MatrNr. des "<< i <<". Teilnehmers ein: " << endl;
    	cin >> Nachname;
    	if( *Nachname != '-'){
    	cin >> Vorname;
    	cin >> Matrikelnummer;
    	COLLEGE[i].Set(char Nachname[], char Vorname[], int Matrikelnummer);
    	i++;
    	}
     
    	else break;
     
    	}
     
        print();
    	return 0;
    }

    Comment resourdre ce probleme? Merci pour l'aide!!

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    Ta fonction print ne va pas du tout.
    Pourquoi tu redéclares une classe !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void Teilnehmer::print(){
     
     
    	  cout << "------------------------------------------------------------------------------------"<<endl;
    	  cout << "*                   |                                     |                        *"<<endl;
    	  cout << "*    Nachname       |              Vorname                |     Matrikelnummer     *"<<endl;
    	  cout << "*                   |                                     |                        *"<<endl;
          cout << "------------------------------------------------------------------------------------"<<endl;
     
    	  cout<< Nachname_in << Vorname_in << Matrikulnummer_in;
    	  cout<<endl;
     
    }
    Tu es dans une méthode mebre de ta classe, tu as juste à afficher ses valeurs.

  3. #3
    Membre éclairé Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Par défaut
    Oui merci mais j'ai toujours la mm erreur avec
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	 COLLEGE[i].Set(char Nachname[], char Vorname[], int Matrikelnummer);
    Code::blocks me donne l'erreur : expected primary-expression before "char"

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    1/Ta variable s'appelle Matrikelnummer_in et non Matrikulnummer_in.
    2/ L'appel d'une fonction, ce n'est pas COLLEGE[i].Set(char Nachname[], char Vorname[], int Matrikelnummer); mais COLLEGE[i].Set(Nachname, Vorname, Matrikelnummer);
    3/ Dans Teilnehmer::print, COLLEGE n'est pas initialisé.
    Peut-être devrais-tu commencer par faire un tour du côté des tutos. Il me semble que ton code traduit des lacunes importantes.
    Cordialement.

  5. #5
    Membre éclairé Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Par défaut
    Merci Archy!! J'y vais un tour!! ... J'ai retouche le code...

    En fait... si mon compilateur me dit char Teilnehmer::Nachname_in[30] is private... que dois je faire?

  6. #6
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut Private
    Bonjour;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private :
    int   Matrikelnummer_in;              //Elementvariable
    char  Vorname_in[30];
    char  Nachname_in[30];
    Je pense que quand on déclare des variables de type privé ( private ) il faut rajouter des accesseurs.

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par buggen25 Voir le message
    Je pense que quand on déclare des variables de type privé ( private ) il faut rajouter des accesseurs.
    Si c'est pour systématiquement rajouter des accesseurs, c'est que les variables ne sont pas private! Il faut se poser la question en conception pourquoi doit-on accéder directement à ces variables à l'extérieur de la classe. Normalement, la classe doit offrir le service permettant d'être dans l'état souhaité.

  8. #8
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Salut,

    Dans ta classe tu as trois attributs private, pourquoi ne les manipules-tu pas dans le constructeur et la méthode Set au lieu de déclarer de nouvelles variables. Un constructeur est censé initialiser (ou pas) tes attributs, chose qui n'est pas faite par ton constructeur, tu déclares de nouvelles variables. Pareil pour Set dans laquelle tu déclares de nouveaux tes attributs alors qu'il faut juste leur donner des valeurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 22/04/2006, 21h59
  2. Optimiser l'utilisation des pointeurs
    Par progfou dans le forum C
    Réponses: 65
    Dernier message: 10/03/2006, 11h49
  3. Réponses: 6
    Dernier message: 21/02/2006, 16h47
  4. Utilisation de pointeurs
    Par renard s dans le forum Débuter
    Réponses: 7
    Dernier message: 08/12/2005, 08h18
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/03/2003, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo