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 :

Aide au niveau de l'opérateur de surcharge <<


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Par défaut Aide au niveau de l'opérateur de surcharge <<
    Bonjour à tous,
    J'ai essayé de composer un petit programme très simple mais je suis confronté à un problème avec l'opérateur de surcharge << qui devrait afficher le contenu des données dans le tableau *tableau de la classe Tableau.
    J'ai 2 messages d'erreurs dans la fonction membre :
    friend ostream& operator << (ostream&, const& Tableau)
    Quelqu'un aurait-il l'amabilité d'analyser le programme et de voir où est l'erreur.
    Le programme fonctionne correctement sauf aux endroits ou les lignes de codes sont en gras.
    Merci d'avance.

    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    #include <iostream.h>
    #include <stdlib.h>
    #include <iomanip.h>
    
    class Tableau{
    	private:
    	int *tableau;
    	int max;
    	int nombre_element;
    	public:
    	Tableau(int n);
    	Tableau(const Tableau&);
    	~Tableau();
    	void initialisation(int);
    	void affiche(int);
    	void introduction_donnees(int);
    	friend ostream& operator << (ostream&, const& Tableau);
    };
    
    Tableau::Tableau(int n = 0){
    	max = n;
    	nombre_element = 0;
    	tableau = new int[n];
    };
    
    Tableau::Tableau (const Tableau& s) {
    	max = s.max;
    	nombre_element = s.nombre_element;
    	tableau = new int[max];
    	for (int i=0; i < max; i++)
    		tableau[i] = s.tableau[i];
    };
    
    
    
    Tableau::~Tableau(){
    	delete []tableau;
    };
    
    void Tableau::initialisation(int n){
    	int i;
    	for(i = 0; i < n; i++){
    		tableau[i] = 0;
    	};
    }
    
    void Tableau::affiche(int n){
    	int i;
    	for(i = 0; i < n; i++){
    		cout<<Tableau::tableau[i]<<" ";
    	};
    };
    
    void Tableau::introduction_donnees(int n){
    	int i, donnee;
    	for(i = 0; i < n; i++){
    		cout<<"donnee numero "<<i+1<<":";
    		cin>>donnee;
    		tableau[i] = donnee;
    		cout<<endl;
    	};
    };
    
    
    ostream& operator << (ostream& o, const Tableau& a){
    	
    	for (int i= 0; i < a.max ; i++){
    		o << a.tableau[i] << endl;
    		return o;	
    	};
    	
    };
    
    int main(){
    int i,n;
    cout<<"veuillez introduire la taille de votre tableau sous forme d'un entier : ";
    cin>>n;
    cout<<""<<endl;
    Tableau *un = new Tableau(n);
    un->initialisation(n);
    cout<<endl;
    cout<<"affichage des valeurs contenues dans le tableau"<<endl;
    un->affiche(n); 
    cout<<""<<endl;
    un->introduction_donnees(n);
    un->affiche(n);
    cout<<""<<endl;
    
    cout<<"affichage avec operateur de surcharge <<"<<endl;
    for(i = 0; i < n; i++){
    		cout << un->tableau[i];
    		cout << endl;
    };
    return 0;
    }

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    Le probleme vient de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    friend ostream& operator << (ostream &, const& Tableau);
    Il faut la remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    friend ostream& operator << (ostream &, Tableau const &);
    Dans une déclaration, les symboles & et * doivent êtres placés après le type. Pour le const, c'est un peu plus compliqué : le const s'applique sur tout ce qui est situé à sa gauche, sauf s'il est tout à gauche. Dans ce cas, il sa'pplique au type immédiatement à sa droite. Pour plus de lisibilité, mieux vaut placer les const les plus à droite possible (sans bien sur changer la sémantique).

    À part ça, il y a encore quelques erreurs :

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Il serait bon de penser à la balise [code], pour la lisibilité.
    Pas besoin d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout<<Tableau::tableau[i]<<" ";
    ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << tableau[i] << " ";
    suffit.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Par défaut Merci !
    Merci pour les infos !

  5. #5
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend ostream& operator << (ostream &, Tableau const &);
    Je préfère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend ostream& operator << (ostream &, const Tableau &);
    Mais après tout est question de goût et de couleur.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Citation Envoyé par Ti-R
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend ostream& operator << (ostream &, Tableau const &);
    Je préfère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend ostream& operator << (ostream &, const Tableau &);
    Mais après tout est question de goût et de couleur.

    Pas tout à fait d'accord : la 1ère syntaxe relève du charabia ;
    c'est normalement la syntaxe prévue pour les pointeurs constants; l'appliquer aux références n'a, AMHA, absolument aucun sens puisqu'une ref ne peut pas être ré-affectée !

    Ce n'est pas une question de goût et de couleur

Discussions similaires

  1. Aide au niveau méthode GET
    Par J0r_x dans le forum Langage
    Réponses: 2
    Dernier message: 20/12/2006, 10h07
  2. Réponses: 7
    Dernier message: 05/09/2006, 08h56
  3. Aide au niveau du code
    Par SoBaKa dans le forum SDL
    Réponses: 4
    Dernier message: 08/08/2006, 00h10
  4. Besoin d'aide au niveau de Shell
    Par Argael dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 01/08/2006, 11h04
  5. Bulle d'Aide au niveau d'un formulaire
    Par sagitarium dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/05/2006, 15h47

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