Rechercher : dans
Par :

[C++] operateur<<() aide SVP

Dernière réponse le 2 fév 2009 à 08:54:44 progfann, le 1 fév 2009 à 20:51:53 
 Signaler ce message aux modérateurs

Bonjour,

j'ai passé des heurs et des heurs pour résoudre ce problème des opérateur. voila l'erreur:

In file included from main.cpp 
ISO C++ forbids declaration of `ostream' with no type 
`ostream' is neither function nor member function; cannot be declared friend 
expected `;' before '&' token 
In function `int main(int, char**)': 
no match for 'operator<<' in 'std::cout << a' 
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] 
 note 
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base&(*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>] 


livre.h:

class livre{
       private:
               int annee;
               char *titre;
               char *auteur;
       public:
              
              livre(int a=0,char*t="",char*au="");
              livre(const livre &);
               ~livre();
               void ecrire();
               void saisir();            
              friend ostream& operator<<(ostream&,const livre&);
               };



livre.cpp:


#include <iostream>
#include <cstdlib>
#include "livre.h"

using namespace std;



livre::livre(int a,char*t,char*au)
  {
    annee=a;
    titre=new char[strlen(t)+1];
    strcpy(titre,t);
    auteur=new char[strlen(au)+1];
    strcpy(auteur,au);
  } 
  
livre::livre(const livre & a)
 {
  annee=a.annee;
   titre=new char[strlen(a.titre)+1];
  strcpy(titre,a.titre);
  auteur=new char[strlen(a.auteur)+1];
  strcpy(auteur,a.auteur);
 } 
livre::~livre()
 {if(titre)
  delete []titre;
  if(auteur)
  delete []auteur;
 }
 
void livre::saisir() 
{cout<<"entrer l annee :";
     cin>>annee;
    
   cout<<"entrer le titre :";
   cin>>titre;
 
   cout<<"entrer l'auteur :";
  cin>>auteur;
}

void livre::ecrire()
{cout<<"l'annee est:"<<annee<<endl; 
 cout<<"le titre est:"<<titre<<endl;
 cout<<"l'auteur est:"<<auteur<<endl;
} 
     
     ostream& operator<<(ostream &oo,const livre &l){
              oo<<"annee : "<<l.annee<<endl;
              oo<<"titre : "<<l.titre<<endl;
              oo<<"auteur : "<<l.auteur<<endl;
              return oo;
              }



main:

#include <iostream>
#include <cstdlib>

#include "livre.h"

using namespace std;

int main(int argc, char *argv[])
{livre a;

a.saisir();

      cout<<a;
  cout<<"\n";  
  system("PAUSE");
    return EXIT_SUCCESS;
}
Configuration: Windows XP
Firefox 3.0.5

Meilleures réponses pour « [C++] operateur<<() aide SVP » dans :
Langage C - Les opérateurs Voir Qu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Langage C++ - Les opérateurs Voir Qu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Entrées/sorties : Les flux en C++ VoirEntrées/sorties : les flux en C++ 1. Ouvrir un fichier en lecture 1.1 Ouverture du fichier "donnees.txt" en lecture 1.2 Lecture du contenu de "donnees.txt" 2. Ouvrir un fichier en écriture 2.1 Ouverture du fichier "donnees.txt" en...
Les templates en C++ VoirIntroduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par...
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C++ - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...

1

progfann, le 1 fév 2009 à 23:30:11

Besoin d'aide svp

Répondre à progfann

2

 Char Snipeur, le 2 fév 2009 à 08:54:44
  • +1

Tu n'as pas de using namespace std dans livre.h donc forcément, il ne connait pas ostream mais std::ostream.
Salutation !
Char Snipeur

Répondre à Char Snipeur
Collection CommentÇaMarche.net