Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > La surcharge d'opérateurs > Lecture du sujet

La surcharge d'opérateurs

`m_heures' undeclared (first use this function) o_O ?

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Golderack # Posté le 07/06/2007 à 22:25:00
Avatar
Groupe : Membres
Bonsoir a tous,

Je suis en train de voir le chapitre sur la surcharge d'opérateurs et je rencontre un probleme:
Code : Console
Project   : Console application
Compiler  : GNU GCC Compiler (called directly)
Directory : D:\Documents and Settings\Nicolas\Mes documents\Programation\duree\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.cpp
Compiling: Duree.cpp
Duree.cpp: In function `Duree operator+(const Duree&;)':
Duree.cpp:26: error: `m_heures' undeclared (first use this function)
Duree.cpp:26: error: (Each undeclared identifier is reported only once for each function it appears in.)
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 0 warnings

Je pense avoir bien compris le cours mais la ca m'echape, je vous met le code:
main.cpp:Code : C++
#include <iostream>

#include "Duree.h"

using namespace std;

int main()
{
        Duree duree1(0,65,65);

        return 0;
}

Duree.h:Code : C++
#ifndef DEF_DUREE
#define DEF_DUREE

class Duree
{
    public:

    Duree(int heures = 0, int minutes = 0, int secondes = 0);

    Duree operator+(const Duree &duree);

    private:

    int m_heures;
    int m_minutes;
    int m_secondes;

};

#endif

et Duree.cpp:Code : C++
#include <iostream>

#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 > 59)
    {
        m_secondes %= 60;
        m_minutes = minutes + secondes / 60;
    }
    if(minutes > 59)
    {
        m_minutes %= 60;
        m_heures = heures + minutes / 60;
    }
}

Duree::Duree operator+(const Duree &duree)
{
    int heures = m_heures;
    int minutes;
    int secondes;
}


Voila c'est surement tres bete mais je voie pas pourquoi il me dit que m_heures n'est pas declarer.

Merci de votre aide.

Edit: Desole, je vien de voir ma connerie.
Donc les autres comme moi ( y'en a d'autre rassurez moi !) qui vont se prendre la tete en fait c'est pas:
Code : C++
Duree::Duree operator+(const Duree &duree)// c'est la que ca se passe
{
    int heures = m_heures;
    int minutes;
    int secondes;
}

mais:
Code : C++
Duree Duree::operator+(const Duree &duree)//hahaha! faut le voir celui la! :lol:
{
    int heures = m_heures;
    int minutes;
    int secondes;
}


voila encore dsl pour ce poste inutile!
Édité le 07/06/2007 à 22:50:34 par Golderack
Hors ligne minirop # Posté le 07/06/2007 à 22:45:18
miniroxx \ò/
Avatar
Modérateurs
il manque le type de retour dans la déclaration de ton opérateur

pas commencés - en cours - finis - (dernier tome lu)
manga : Love Hina - Ichigo 100% - Fruits Basket - School Rumble - Death Note - Parmi Eux - One Piece (46) - Naruto (45) - Lovely Complex (10) - Fullmetal Alchimist (22) -> My Manga
IDE multiplateforme pour Qt Image utilisateur !! Qt @ IRC --> #qt-fr@irc.freenode.net
 
Hors ligne Golderack # Posté le 07/06/2007 à 22:56:26
Avatar
Groupe : Membres
minirop merci, j'avais en fait pas fini mon operateur enfin pas cette fois, je bloquer sur cette erreur que je signal dans mon premier post(que j'ai editer).

Je trouve que M@theo passe un peut vite sur cette subtilite, enfin j'suis p'tetre le seul qui c'est fait avoir.
je la remet encore une fois pour les autre^^

pour la definition des surcharge d'opérateurs c'est pas:
Code : C++
Duree::Duree operator+(const Duree &duree)

mais:Code : C++
Duree Duree::operator+(const Duree &duree)


voila merci a tous.

Edit:Citation : minirop
il manque le type de retour dans la déclaration de ton opérateur
Ce qui fait qu'il manquer le type de retour dans la definition(?) de mon operateur en fait, je vien de comprendre merci!
Édité le 07/06/2007 à 23:00:59 par Golderack
Hors ligne MatteX # Posté le 08/06/2007 à 14:38:07
The cake is a lie!
Avatar
Groupe : Membres
Il y a un lien pour mettre ce sujet en résolu (ou une case à coché... je ne sais pas j'ai jamais fait de sujet) quelque part. Trouve le et clic dessus!

Petite précision : la surcharge d'opérateur c'est comme une méthode de classe :

Code : C++
class Bidon
{
  Bidon();
  int FaitRien();
}

Bidon::Bidon() {}
int Bidon::FaitRien() { return 666; }


tu vois c'est comme pour ton opérateur ( ... Duree::operator+(...) )
il y a un type de retour, un nom, 0, 1 ou plusieurs paramètres et un traitement.

Je ne sais pas si tu te souviens, l'opérateur :: (Oui c'est un opérateur mais il n'est pas surchargeable puisqu'il sert à la compilation et non au traitement) est appelé Opérateur de Résolution de Portée i.e. Il sert à s'assurer qu'on utilise bien la bonne fonction (ou qu'on définie bien la bonne) car si tu as le droit de te faire un objet nommé cout dans une classe et qu'il en existe aussi un autre dans l'espace global et un dans l'espace nommé std. Imagine si c'était impossible, on aurait tous des noms de fonctions énormes!

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Golderack # Posté le 09/06/2007 à 17:05:48
Avatar
Groupe : Membres
Bonjour,

Merci MatteX pour les explications, pour ce qui est de l'option resolue,
je la trouve bien en repondant mais pas en editant. o_O

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 30 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0199s (0.007s)