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 :

Je suis bloqué pour faire un operateur de flux


Sujet :

C++

  1. #1
    Débutant
    Homme Profil pro
    aucun
    Inscrit en
    Avril 2012
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2012
    Messages : 152
    Points : 28
    Points
    28
    Par défaut Je suis bloqué pour faire un operateur de flux
    Bonjour,

    Je suis un debutant en C++. J'essaie d'apprendre le C++ par moi-meme en lisant des tutorials. Je suis rendu au programme d'orientation d'objet(POO). Je suis en train de faire des operations de flux. Mais, mon IDE genere beaucoups d'erreurs que je ne comprends pas quelqu'un peut me les expliquer svp.

    Erreur
    1>------ Début de la génération*: Projet*: projet, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>Temps.cpp
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C2544: attendu ')' pour l'opérateur '()'
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'ostream'
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C2530: '()'*: les références doivent être initialisées
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C2530: 'monFlux'*: les références doivent être initialisées
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C2143: erreur de syntaxe*: absence de ';' avant 'const'
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C2512: 'std::basic_ostream<_Elem,_Traits>'*: aucun constructeur par défaut approprié disponible
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(289) : error C2059: erreur de syntaxe*: ')'
    1>c:\users\tamere\documents\visual studio 2008\projects\mabite\projet\temps.cpp(290) : error C2470: 'a'*: similaire à une définition de fonction, mais aucune liste de paramètres*; corps apparent ignoré
    1>Génération de code en cours...
    1>Compilation en cours...
    1>main.cpp
    1>Génération de code en cours...
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\tamere\Documents\Visual Studio 2008\Projects\mabite\projet\Debug\BuildLog.htm"
    1>projet - 9 erreur(s), 0 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    Temps.h
    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
    #ifndef DEF_TEMPS
    #define DEF_TEMPS
    #include <iostream>
    using namespace std;
     
    /* Creation de la classe temps qui me permettera de calculer du temps avec le temps */
    class Temps
    {
    	friend ostream &operator<<(ostream &monFlux, Temps const& a);
    /* Les attributs du temps */
    private:
    	int m_semaine;
    	int m_jour;
    	int m_heure;
    	int m_minute;
    	int m_seconde;
    	int m_secondeAbsolu;
     
    /* Action que le temps peut faire */
    public:
    	Temps(int heure = 0,int minute = 0, int seconde = 0);
    	void balancer();
    	int get_secondeAbsolu() const; 
    	int get_semaine() const;
    	int get_jour() const;
    	int get_heure() const;
    	int get_minute() const;
    	int get_seconde() const;
    	void afficher(std::ostream &monFlux);
    	Temps operator+=(const Temps& a);
    	Temps operator+=(int seconde);
    	Temps operator-=(const Temps& a);
    	Temps operator-=(int seconde);
    	Temps operator*=(const Temps& a);
    	Temps operator*=(int seconde);
    	Temps operator/=(const Temps& a);
    	Temps operator/=(int seconde);
    	void calculerSecondeAbsolu(int seconde = 0,int minute = 0,int heure= 0);
    };
     
    // Les operateurs a plus de 2 arguments puisque si je les mets dans la fonction, il y aura des erreurs
    Temps operator+(Temps const& a, Temps const& b);
    Temps operator+(Temps const& a, int seconde);
    Temps operator-(Temps const& a, Temps const& b);
    Temps operator-(Temps const& a, int seconde);
    Temps operator*(Temps const& a, Temps const& b);
    Temps operator*(Temps const& a, int seconde);
    Temps operator/(Temps const& a, Temps const& b);
    Temps operator/(Temps const& a, int seconde);
    #endif
    Temps.cpp
    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    #include "Temps.h"
    #include <iostream>
    #include <string>
    using namespace std;
     
    // Construction du temps
    Temps::Temps(int heure,int minute, int seconde)
    {
    	//Placer les parametre dans les attributs
    	m_heure = heure;
    	m_minute = minute;
    	m_seconde = seconde;
    	//Initialiser les attributs
    	m_jour = 0;
    	m_semaine = 0;
    	m_secondeAbsolu = 0;
    	//Calculer les secondes absolus
    	calculerSecondeAbsolu(seconde,minute,heure);
    }
     
    //Calculer le nombre de seconde total
    void Temps::calculerSecondeAbsolu(int seconde,int minute,int heure)
    {
    	//Si l'heure(en parametre) est plus que 0
    	if(heure > 0)
    	{
    		//A chaque 1 heure(en parametre), la seconde absolu gagne 3600
    		while(heure > 0)
    		{
    			heure -= 1;
    			m_secondeAbsolu += 3600;
    		}
    	}
    	//Si la minute(en parametre) est plus grand que 0
    	if(minute > 0)
    	{
    		//A chaque 1 minute(en parametre), la seconde absolu gagne 60.
    		while(minute > 0)
    		{
    			minute -= 1;
    			m_secondeAbsolu += 60;
    		}
    	}
    	//Rajouter le nombre de seconde dans la seconde absolu
    	m_secondeAbsolu += seconde;
    	//Balancer les unités de temps
    	balancer();
    }
     
    //Balancer les unités de temps pour pas qu'il depasse leur capacité maximal
    void Temps::balancer()
    {
    	//Reinitialiser les attributs
    	m_heure = 0;
    	m_minute = 0;
    	m_jour = 0;
    	m_semaine = 0;
    	// Nous avons faite sa pour que toute les heures, minute, jour & semaine soit dans une meme variable(C'est plus facile a controler)
    	m_seconde = m_secondeAbsolu;
    	// Si le nombre de seconde est plus grand que 60
    	if(m_seconde > 60)
    	{
    		// Rajouter 1 minute pour chaque 60 seconde de trop
    		while(m_seconde > 60)
    		{
    			m_seconde -= 60;
    			m_minute += 1;
    		}
    	}
    	//Si le nombre de minute est plus grand que 60
    	if(m_minute > 60)
    	{
    		// Rajouter 1 heure pour chaque 60 minute de trop
    		while(m_minute > 60)
    		{
    			m_minute -= 60;
    			m_heure += 1;
    		}
    	}
    	//Si le nombre d'heure est plus grand que 24
    	if(m_heure > 24)
    	{
    		// Rajouter 1 journee pour chaque 24 heure de trop
    		while(m_heure > 24)
    		{
    			m_heure -= 24;
    			m_jour += 1;
    		}
    	}
    	// Si le nombre de jour est plus grand que 7
    	if(m_jour > 7)
    	{
    		// Rajouter 1 semaine pour chaque 7 jour de trop
    		while(m_jour > 7)
    		{
    			m_jour -= 7;
    			m_semaine += 1;
    		}
    	}
    }
     
    // Retourne la seconde absolu
    int Temps::get_secondeAbsolu() const
    {
    	return m_secondeAbsolu;
    }
     
    // Affiche le temps de maniere lisible
    void Temps::afficher(ostream &monFlux)
    {
    	//Si il y a des semaines, on affiche le texte.
    	if(m_semaine > 0)
    	{
    		monFlux << m_semaine << " semaine(s) ";
    	}
    	//Si il y a des journees, on affiche le texte.
    	if(m_jour > 0)
    	{
    		monFlux << m_jour << " jour(s) ";
    	}
    	//Si il y a des heures, on affiche le texte.
    	if(m_heure > 0)
    	{
    		monFlux << m_heure << " heure(s) ";
    	}
    	//Si il y a des minutes, on affiche le texte.
    	if(m_minute > 0)
    	{
    		monFlux << m_minute << " minute(s) ";
    	}
    	//On affiche les secondes meme si qu'il ont a pas.
    	monFlux << m_seconde << " seconde(s) " << endl;
    }
     
    int Temps::get_semaine() const
    {
    	return m_semaine;
    }
     
    int Temps::get_jour() const
    {
    	return m_jour;
    }
     
    int Temps::get_heure() const
    {
    	return m_heure;
    }
     
    int Temps::get_minute() const
    {
    	return m_minute;
    }
     
    int Temps::get_seconde() const
    {
    	return m_seconde;
    }
     
    // Additionner des Temps
    Temps operator+(Temps const& a, Temps const& b)
    {
    	Temps copie(0,0,a.get_secondeAbsolu());
        copie += b;
    	copie.balancer();
        return copie;
    }
     
    // Addtionner des Temps avec des int
    Temps operator+(Temps const& a, int seconde)
    {
    	Temps copie(0,0,a.get_secondeAbsolu()+seconde);
        return copie;
    }
     
    // Soustraire des Temps
    Temps operator-(Temps const& a, Temps const& b)
    {
    	Temps copie(0,0,a.get_secondeAbsolu());
        copie -= b;
    	copie.balancer();
        return copie;
    }
     
    // Soustraire des Temps avec des int
    Temps operator-(Temps const& a, int seconde)
    {
    	Temps copie(0,0,a.get_secondeAbsolu()-seconde);
        return copie;
    }
     
    // multiplier des Temps
    Temps operator*(Temps const& a, Temps const& b)
    {
    	Temps copie(0,0,a.get_secondeAbsolu());
        copie *= b;
    	copie.balancer();
        return copie;
    }
     
    // Multiplier des Temps avec des int
    Temps operator*(Temps const& a, int seconde)
    {
    	Temps copie(0,0,a.get_secondeAbsolu()*seconde);
        return copie;
    }
     
    // Diviser des Temps
    Temps operator/(Temps const& a, Temps const& b)
    {
    	Temps copie(0,0,a.get_secondeAbsolu());
        copie /= b;
    	copie.balancer();
        return copie;
    }
     
    // Diviser des Temps avec des int
    Temps operator/(Temps const& a, int seconde)
    {
    	Temps copie(0,0,a.get_secondeAbsolu()/seconde);
        return copie;
    }
     
    // Raccourcie pour additionner le temps
    Temps Temps::operator+=(const Temps& a)
    {
    	m_secondeAbsolu += a.get_secondeAbsolu();
    	balancer();
    	return *this;
    }
     
     
    // Raccourcie pour additionner le temps avec des int
    Temps Temps::operator+=(int seconde)
    {
    	m_secondeAbsolu += seconde;
    	balancer();
    	return *this;
    }
     
    // Raccourcie pour soustraire le temps
    Temps Temps::operator-=(const Temps& a)
    {
    	m_secondeAbsolu -= a.get_secondeAbsolu();
    	balancer();
    	return *this;
    }
     
    // Raccourcie pour soustraire le temps avec des int
    Temps Temps::operator-=(int seconde)
    {
    	m_secondeAbsolu -= seconde;
    	balancer();
    	return *this;
    }
     
    // Raccourcie pour multiplier le temps
    Temps Temps::operator*=(const Temps& a)
    {
    	m_secondeAbsolu *= a.get_secondeAbsolu();
    	balancer();
    	return *this;
    }
     
    // Raccourcie pour multiplier le temps avec des int
    Temps Temps::operator*=(int seconde)
    {
    	m_secondeAbsolu *= seconde;
    	balancer();
    	return *this;
    }
     
    // Raccourcie pour diviser le temps
    Temps Temps::operator/=(const Temps& a)
    {
    	m_secondeAbsolu /= a.get_secondeAbsolu();
    	balancer();
    	return *this;
    }
     
    // Raccourcie pour diviser le temps avec des int
    Temps Temps::operator/=(int seconde)
    {
    	m_secondeAbsolu /= seconde;
    	balancer();
    	return *this;
    }
     
    ostream &operator(ostream &monFlux, Temps const& a)
    {
    	a.afficher(monFlux);
    	return monFlux;
    }
    main.cpp
    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
    #include <iostream>
    #include "Temps.h"
    using namespace std;
     
    int main()
    {
    	// Declarer les objets
    	Temps Total1;
    	Temps Total2;
    	Temps Total3;
    	Temps TempsA(49,13,73);
    	Temps TempsB(47,209,64);
    	Temps TempsC(81,34,186);
    	Temps TempsD(0,0,418686);
    	Temps TempsE(24,60,60);
    	Temps TempsF(3600,120,60);
     
    	// Calculer le temps (Je calcule juste pour m'amuser)
    	Total1 = TempsE/60;
    	Total1 += 100;
    	Total1 += TempsC;
    	Total2 = TempsD + 81314;
    	Total3 = TempsF*10;
    	Total3 -= 60;
    	Total3 -= TempsA;
     
     
    	// Afficher les resultats
    	cout << Total1;
     
    	system("pause");
    	return 0;
    }

  2. #2
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Très rapidement (parce qu’il y aurait pas mal de remarques à faire, notamment sure les using namespace qu’on ne devrait jamais mettre dans les .h)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ostream &operator<<(ostream &monFlux, Temps const& a)
    Tu as oublié le << après operator ligne 289, ce qui provoque tes erreurs.

  3. #3
    Débutant
    Homme Profil pro
    aucun
    Inscrit en
    Avril 2012
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2012
    Messages : 152
    Points : 28
    Points
    28
    Par défaut
    Merci pour ton aide

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Au passage, il est déconseillé de faire des using namespace dans un .h.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Éditeur utilisé pour faire du HTML
    Par mio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 295
    Dernier message: 22/12/2008, 16h21
  2. Quels outils logiciels utiliser pour faire son site ?
    Par tripper.dim dans le forum Outils
    Réponses: 36
    Dernier message: 22/05/2008, 19h39
  3. Réponses: 42
    Dernier message: 11/03/2007, 15h09
  4. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 23h42
  5. Réponses: 2
    Dernier message: 11/07/2002, 09h31

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