Erreur de compilation (programme simple) - ... et je vois pas

Bonjour,
J’ai decidé de me remettre a la programmation et dans du code assez simple, j’ai une erreur de compilation. J’utilise Dev C++.
Voici le code


#include <cstdlib>
#include <iostream>

using namespace std;
void afficher();
int salaire;

class compte {
public:
 int salaire2;
 void afficher() {
    salaire2=12;  
    cout << "salaire2 = " << salaire2 << endl;
  }
};


compte compte1;

int main()
{
    cin >> salaire;
    cout << salaire << endl;
    cout << compte1.afficher();   
    system("PAUSE");
}

L’erreur de compilation produite est no match for ‘operator<<’ in ‘std::cout << (&compte1)->compte::afficher()’

Merci à vous :slight_smile:

:hello:

Normal : la méthode afficher ne renvoie rien, mais affiche directement.

Il faut donc faire ceci :

int main()
{
    cin >> salaire;
    cout << salaire << endl;
    compte1.afficher();   
    system("PAUSE");
}

Ah oui c’est exacte cela fonctionne bien, merci a toi :wink:

J’avais trouver une solution intermediaure qui consistait a faire ceci


class compte {
public:
 int salaire2;
 int afficher() {
    cin >> salaire2;
    cout << salaire2 << endl;
  }
};


compte compte1;

int main()
{
    cin >> salaire;
    cout << salaire << endl;
    cout << compte1.afficher() << endl;   
    system("PAUSE");
}

Je declarais afficher comme un int et la cout fonctionne alors. En revanche il me faisait toujours une erreur a l’affichage. En effet entre l’affichage du dernier cout et la pause, il affiche un nombre et je ne sais pas d’ou il vient.

Merci à toi :slight_smile:

Edit, j’ai trouvé, en fait, a la fin de afficher je fais plutot un “return salaire2” ou lieu d’un cout. Ce la ne fait plus l’erreur :slight_smile:

Avec cette solution, ce qu’il aurait fallu faire c’est ceci :

int afficher() {
    cin >> salaire2;
    return(salaire2);
  }

Sinon, pour être propre je te conseille de séparer la saisie de l’affichage. Fais une méthode saisie() qui fait le cin, et une méthode afficher() qui affiche ou renvoie le salaire :wink:

edit : ah ben tu as trouvé tout seul :slight_smile:

oui tu as raison, ca fait un code plus lisible. A la limite dans le main on ne fait plus que des appels a des methodes :wink:

Sinon j’ai une autre question qui a rien a voir mais j’en profite ;), comment est il possible de faire appel a des methodes qui font partie d’autres code. Genre dans mon projet je fais deux fichiers .cpp et dans le premier je veux faire appel a une methode du deuxieme !? :slight_smile:

Merci de ton aide :slight_smile:

Tu prototypes les fonctions dans des fichiers d’entête (.h ou .hpp) que tu inclus dans le fichier qui les appel (#include “foo.hpp”).