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 :

Problème sur std::ostream has not been declared


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Problème sur std::ostream has not been declared
    Bonjour à tous,
    ayant effectué une recherche sur le forum et même sur internet mais n'ayant pas trouvé de réponse, je me tourne vers vous pour m'expliquer le problème.

    Je suis un cours C++ et je bloque lors de l'implémentation de l'opérateur "<<" pour la classe durée.

    Voici le code source:
    Duree.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
     
    #ifndef DEF_DUREE
    #define DEF_DUREE
    class Duree
    {
    public:
     
    Duree(int heures = 0, int minutes = 0, int secondes = 0);
    Duree& operator+=(Duree const& duree);
    Duree& operator-=(Duree const& duree);
    Duree& operator*=(int nombre);
    void afficher(std::ostream &out) const;
     
     
    private:
    int m_heures;
    int m_minutes;
    int m_secondes;
    int m_excedentMinutes;
    int m_excedentHeures;
    };
    #endif
     
    Duree operator+(Duree const&a, Duree const& b);
    Duree operator-(Duree const&a, Duree const& b);
    Duree operator*(Duree const&a, int nombre);
    std::ostream& operator<<(std::ostream &out, Duree const& duree);
    Duree.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
    #include <iostream>
    #include <fstream>
    #include "Duree.h"
     
    using namespace std;
     
    Duree::Duree(int heures, int minutes, int secondes) :
    m_heures(heures), m_minutes(minutes), m_secondes(secondes)
    {
       if (secondes >= 60)
        {
            m_excedentMinutes = secondes/60;
            secondes = secondes % 60 ;
            minutes = minutes + m_excedentMinutes;
        }
        if (minutes >= 60)
        {
            m_excedentHeures = minutes/60;
            secondes = minutes % 60;
            heures = heures + m_excedentMinutes;
        }
    }
     
    Duree& Duree::operator+=(Duree const& duree2)
    {
        m_secondes = m_secondes + duree2.m_secondes;
        m_minutes = m_minutes + m_secondes/60;
        m_secondes = m_secondes % 60;
     
        m_minutes = m_minutes + duree2.m_minutes;
        m_heures = m_heures + m_minutes/60;
        m_minutes = m_minutes % 60;
     
        m_heures = m_heures + duree2.m_heures;
     
        return *this;
    }
     
    Duree& Duree::operator-=(Duree const& duree2)
    {
        int negSecondes(0);
        int negMinutes(0);
        m_secondes = m_secondes - duree2.m_secondes;
        if (m_secondes < 0)
        {
            negSecondes = m_secondes;
            m_secondes = 60 + m_secondes;
        }
     
        m_minutes = m_minutes - duree2.m_minutes;
     
        if (m_minutes < 0 and negSecondes < 0)
        {
            negMinutes = m_minutes;
            m_minutes = 59 + m_minutes;
        }
        else if (m_minutes < 0 and negSecondes  == 0)
        {
            negMinutes = m_minutes;
            m_minutes = 60 + m_minutes;
        }
     
        if (negMinutes <0)
        {
            m_heures = m_heures - 1 - duree2.m_heures;
        }
        else
        {
            m_heures = m_heures - duree2.m_heures;
        }
     
    }
     
    Duree& Duree::operator*=(int nombre)
    {
        int secondesSup(0);
        int minutesSup(0);
        m_secondes = m_secondes * nombre;
        if (m_secondes >= 60)
        {
            secondesSup = m_secondes / 60;
            m_secondes = m_secondes %60;
        }
        m_minutes = m_minutes * nombre + secondesSup;
        if (m_minutes >= 60)
        {
            minutesSup =  m_minutes / 60;
            m_minutes = m_minutes % 60;
        }
        m_heures = m_heures * nombre + minutesSup;
    }
     
    Duree operator+(Duree const&a, Duree const& b)
    {
        Duree copie(a);
        copie += b;
        return copie;
    }
     
    Duree operator-(Duree const&a, Duree const& b)
    {
        Duree copie(a);
        copie -= b;
        return copie;
    }
     
    Duree operator*(Duree const&a, int nombre)
    {
        Duree copie(a);
        copie *= nombre;
        return copie;
    }
     
    void Duree::afficher(ostream &out) const
    {
        out << m_heures << "h" << m_minutes << "m" << m_secondes <<"s";
    }
     
    ostream& operator<<(ostream &out, Duree const& duree)
    {
        duree.afficher(out);
        return out;
    }
    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
    #include "duree.h"
    #include <iostream>
     
    using namespace std;
    int main()
    {
     
    Duree duree1(1, 45, 40), duree2(1, 46, 50);
    Duree resultat;
     
    cout << duree1;
    return 0;
    }

    Voici ses messages d'erreurs :

    C++\Duree\duree.h|11|error: 'std::ostream' has not been declared|

    C++\Duree\duree.h|26|error: expected constructor, destructor, or type conversion before '&' token|

    C++\Duree\main.cpp|11|error: no match for 'operator<<' in 'std::cout << duree1'|
    Le problème c'est que j'ai regardé la correction est elle est en tout point identique ? D'ou peut venir le problème ?

    Merci des réponses que vous m'apporterez.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour

    Tu utilises outstream dans le .h donc il faut déplacer ton #include dans le .h

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Merci
    Merci ça fonctionne même s'il est vrai que dans la correction, on n'utilise pas de iostream pour le header.

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

Discussions similaires

  1. erreur : 'QT' has not been declared
    Par kevin254kl dans le forum Débuter
    Réponses: 2
    Dernier message: 12/12/2014, 20h38
  2. 'list' has not been declared
    Par Monta^^ dans le forum C++
    Réponses: 1
    Dernier message: 14/07/2009, 20h14
  3. ‘UINT16’ has not been declared
    Par mattstriker dans le forum C++
    Réponses: 5
    Dernier message: 17/02/2009, 01h41
  4. Problème compilation 'has not been declared'
    Par Choupinou dans le forum C++
    Réponses: 5
    Dernier message: 28/11/2006, 21h09

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