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 :

[POO] Fraction et constructeur


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut [POO] Fraction et constructeur
    Bonjour,

    j'essaye de créer une classe fraction pour additionner, multiplier, et comparer (égal, plus grand, plus petit) des fractions.
    Mais j'ai pas mal de problèmes:
    -Mon compilateur considere mon constructeur comme une fonction. Et du coup je ne peut rien faire.
    -J'ai crée des valeurs de base pour mon constructeur, mais impossible d'en initialiser une seul (il demande 2 arguments obligatoirement).

    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
    #include <iostream>
    #include <string>
    #include "Zfraction.h"
     
    using namespace std;
     
    int main()
    {
     
        Zfraction a(4,5);      //Déclare une fraction valant 4/5
        Zfraction b(2);        //Déclare une fraction valant 2/1
        Zfraction c,d;         //Déclare deux fractions valant 0/1
     
    return 0;
    }
    Zfraction.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
    #include "Zfraction.h"
     
     
    Zfraction::Zfraction()
    {
        m_numerateur = 0;
        m_denominateur = 1;
    }
     
    Zfraction::Zfraction(int numerateur, int denominateur)
    {
        m_numerateur(numerateur);
        m_denominateur(denominateur);
    }
    Zfraction::Zfraction(int numerateur)
    {
        m_numerateur(numerateur);
        m_denominateur = 1;
    }
     
    Zfraction::int pgcd(int a, int b)
    {
        while (b != 0)
        {
            const int t = b;
            b = a%b;
            a=t;
        }
        return a;
    }

    Zfraction.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
    #ifndef ZFRACTION_H_INCLUDED
    #define ZFRACTION_H_INCLUDED
    #include <iostream>
     
    class Zfraction
    {
    public:
        Zfraction();
        Zfraction(int numerateur, int denominateur);
        Zfraction(int numerateur);
        int pgcd(int a, int b);
     
    private:
        int m_numerateur;
        int m_denominateur;
    };
     
    #endif // ZFRACTION_H_INCLUDED
    C'est peut être simple mais ca fait quelque jours que je programme plus j'ai peut être oublier quelque bases.
    En tout cas merci a vous !

  2. #2
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Citation Envoyé par Garwan50 Voir le message
    Bonjour,

    j'essaye de créer une classe fraction pour additionner, multiplier, et comparer (égal, plus grand, plus petit) des fractions.
    Mais j'ai pas mal de problèmes:
    -Mon compilateur considere mon constructeur comme une fonction. Et du coup je ne peut rien faire.
    -J'ai crée des valeurs de base pour mon constructeur, mais impossible d'en initialiser une seul (il demande 2 arguments obligatoirement).

    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
    #include <iostream>
    #include <string>
    #include "Zfraction.h"
     
    using namespace std;
     
    int main()
    {
     
        Zfraction a(4,5);      //Déclare une fraction valant 4/5
        Zfraction b(2);        //Déclare une fraction valant 2/1
        Zfraction c,d;         //Déclare deux fractions valant 0/1
     
    return 0;
    }
    Zfraction.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
    #include "Zfraction.h"
     
     
    Zfraction::Zfraction()
    {
        m_numerateur = 0;
        m_denominateur = 1;
    }
     
    Zfraction::Zfraction(int numerateur, int denominateur)
    {
        m_numerateur(numerateur);
        m_denominateur(denominateur);
    }
    Zfraction::Zfraction(int numerateur)
    {
        m_numerateur(numerateur);
        m_denominateur = 1;
    }
     
    Zfraction::int pgcd(int a, int b)
    {
        while (b != 0)
        {
            const int t = b;
            b = a%b;
            a=t;
        }
        return a;
    }

    Zfraction.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
    #ifndef ZFRACTION_H_INCLUDED
    #define ZFRACTION_H_INCLUDED
    #include <iostream>
     
    class Zfraction
    {
    public:
        Zfraction();
        Zfraction(int numerateur, int denominateur);
        Zfraction(int numerateur);
        int pgcd(int a, int b);
     
    private:
        int m_numerateur;
        int m_denominateur;
    };
     
    #endif // ZFRACTION_H_INCLUDED
    C'est peut être simple mais ca fait quelque jours que je programme plus j'ai peut être oublier quelque bases.
    En tout cas merci a vous !
    ton constructeur n'est pas bon il est par defaut pour faire se que tu veut il faut faire Zfraction(int , int) la sa devrai marcher ou sinon il faut dans le main faire Zfraction a(): puis dans ton Zfrction.cpp Zfraction::Zfraction(): valeur(4), valeur2(5). enfin a toi de voir


    edit: desoler je vien de voir les autre constructeurs

  3. #3
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    tien essaye comme sa moi sa marche

    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
    #include "Zfraction.h"
     
     
    Zfraction::Zfraction()
    {
        m_numerateur = 0;
        m_denominateur = 1;
    }
     
    Zfraction::Zfraction(int numerateur, int denominateur)
    {
        m_numerateur = numerateur;
        m_denominateur = denominateur;
    }
    Zfraction::Zfraction(int numerateur)
    {
        m_numerateur = numerateur;
        m_denominateur = 1;
    }
     
    int Zfraction::pgcd(int a, int b)
    {
        while (b != 0)
        {
            const int t = b;
            b = a%b;
            a=t;
        }
        return a;
    }

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    initialisation et affectation ne sont pas les mêmes opérations

    La bonne marche à suivre est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Zfraction::Zfraction(int numerateur, int denominateur):
        m_numerateur(numerateur),
        m_denominateur(denominateur)
    {
    }

  5. #5
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Citation Envoyé par leternel Voir le message
    initialisation et affectation ne sont pas les mêmes opérations

    La bonne marche à suivre est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Zfraction::Zfraction(int numerateur, int denominateur):
        m_numerateur(numerateur),
        m_denominateur(denominateur)
    {
    }

    oops autant pour moi la methode que je t'ai donné sont des setter la bonne methode et celle d'eternel si jamais tu veut initialiser désoler

  6. #6
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Merci quand meme devdeb .

    Et merci Leternel, je penser que c'était deux méthodes qui était possible, mais visiblement il n'y en a qu'une :p.

    Et est ce que je suis obligé de créer trois constructeur pour trois cas de figure (soit un constructeur de base, un constructeur avec deux arguments, et un constructeur avec un argument) ou il y a une autre possibilités ?

    Et j'ai un soucis avec le PGCD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zfraction::int pgcd(int a, int b)
    18|error: expected unqualified-id before 'int'|
    dans le header c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int pgcd(int a, int b);

  7. #7
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Citation Envoyé par Garwan50 Voir le message
    Merci quand meme devdeb .

    Et merci Leternel, je penser que c'était deux méthodes qui était possible, mais visiblement il n'y en a qu'une :p.

    Et est ce que je suis obligé de créer trois constructeur pour trois cas de figure (soit un constructeur de base, un constructeur avec deux arguments, et un constructeur avec un argument) ou il y a une autre possibilités ?

    Et j'ai un soucis avec le PGCD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zfraction::int pgcd(int a, int b)
    18|error: expected unqualified-id before 'int'|
    dans le header c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int pgcd(int a, int b);
    int pgcd est declarer dans ton Zfraction ou pas ?

  8. #8
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Citation Envoyé par Garwan50 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zfraction::int pgcd(int a, int b)
    deja sa c'est plutot sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Zfraction::pgcd(int a, int b)

  9. #9
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Citation Envoyé par Garwan50 Voir le message
    Et est ce que je suis obligé de créer trois constructeur pour trois cas de figure (soit un constructeur de base, un constructeur avec deux arguments, et un constructeur avec un argument) ou il y a une autre possibilités ?
    Il y a les arguments par défaut, ici, ca donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Zfraction::Zfraction(int numerateur = 0, int denominateur = 1):
        m_numerateur(numerateur),
        m_denominateur(denominateur)
    {}
    pour le PGCD, devdeb91 t'as répondu.
    :: est le séparateur dans les "chemins de nommage"

    l'analogie avec les répertoires serait la suivante:
    chaque namespace et chaque classe/structure introduit un dossier. Techiquement parlant, les variables locales sont définies en dehors de ces considérations.

    Chaque identifieur possède un nom complet, mais les mots clés en sont exclus. int n'a pas de nommage, tandis que std::string si.

    dans ton cas, pgcd appartient à la classe Zfraction du namespace global
    le nom complet est donc "::Zfraction::pgcd", qui peut aussi se nommer de manière relative (au namespace globale) "Zfraction::pgcd"

    Cette notion de nom relatif est importante quand il y a des "using namespace".
    Le nom relatif est cherché parmi chaque namespace ayant subit un using, tandis que le nom complet est cherché uniquement dans le namespace global

  10. #10
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    A titre d'info pour l'OP, le prototype de n'importe quelle fonction membre d'une classe est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TypeRetour MaClasse::MaMethode(TypeParametre1 parametre1, ... , TypeParametreN parametreN)

  11. #11
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par leternel Voir le message
    Il y a les arguments par défaut, ici, ca donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Zfraction::Zfraction(int numerateur = 0, int denominateur = 1):
        m_numerateur(numerateur),
        m_denominateur(denominateur)
    {}
    C'est presque ça.
    Tu ne veux pas les arguments par défaut dans la définition de la fonction, mais dans sa déclaration -- car les arguments par défauts ne sont exploitables que depuis le code, d'une même unité de traduction, qui suit leur apparition.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Garwan50 Voir le message
    Merci quand meme devdeb .

    Et merci Leternel, je penser que c'était deux méthodes qui était possible, mais visiblement il n'y en a qu'une :p.
    Les deux méthodes sont possibles, mais elles ne se comportent pas de la même manière. Leur sémantique est différente : la méthode présentée par leternel initialise (construit) les données membres ; la méthode que tu utilises les affecte, après leur initialisation par défaut. Sur des entier, la différence est minime. Dans le cas où on doit initialiser des données plus complexes (un std::string par exemple) alors le coût n'est pas du tout le même.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  13. #13
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Merci pour toute vos réponse, j'ai pris le temps d'étudier chacune d'entre elle et je vous remercie (je met du temps a pigé en general).

    Cependant pour le constructeur ca ne semble pas fonctionner, j'ai tout d'abord essayer la methode de leternel a savoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Zfraction::Zfraction(int numerateur = 0, int denominateur = 1):
        m_numerateur(numerateur),
        m_denominateur(denominateur)
    {}
    et j'ai adapté par celle de Luc Hermitte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Zfraction:: Zfraction() : int numerateur = 0, int denominateur = 1, m_numerateur(numerateur), m_denominateur(denominateur)
    {
    }
    Mais ca ne fonctionne pas
    Merci bien ^^.

  14. #14
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    il faut déclarer le constructeur dans le .h(pp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct C {
        C(int a = 1);
        int m;
    };
    et le coder dans le .cpp ou sur place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C::C(int a) : m(a) {cout<<"coin coin"<<endl;}
    au niveau syntaxe, il y a des valeurs par défaut pour les arguments dans la déclaration (il ne doivent pas être défini plusieurs fois dans la même unité de compilation)

    puis la définition du constructeur est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <identifiant complet de la classe>::<nom de la class/du constructeur> ( <argument et nom>… ) :
        membre1(valeur) ,… {
        /* corps du constructeur, appelé apèrs initialisation de la mémoire*/
    }

  15. #15
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Merci, j'ai de nouveau essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "Zfraction.h"
     
     
    Zfraction::Zfraction() : numerateur(0), denominateur = (1) , m_numerateur(numerateur), m_denominateur(denominateur)
    {
    }
    dans mon Zfraction.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
    #ifndef ZFRACTION_H_INCLUDED
    #define ZFRACTION_H_INCLUDED
    #include <iostream>
     
    class Zfraction
    {
    public:
        Zfraction();
        Zfraction(int numerateur, int denominateur);
    private:
        int m_numerateur;
        int m_denominateur;
        int numerateur;
        int denominateur;
    };
     
    #endif // ZFRACTION_H_INCLUDED
    Pourtant j'ai bien initalisé ma variable, si je retire Zfraction() j'ai cet erreur:
    C:\Gary\tuto\Zfraction.cpp|4|error: prototype for 'Zfraction::Zfraction()' does not match any in class 'Zfraction'|
    C:\Gary\tuto\Zfraction.h|5|error: candidates are: Zfraction::Zfraction(const Zfraction&)|
    C:\Gary\tuto\Zfraction.h|8|error: Zfraction::Zfraction(int, int)|
    ||=== Build finished: 3 errors, 0 warnings (0 minutes, 1 seconds) ===|
    Si je laisse les deux j'ai:
    C:\Gary\tuto\Zfraction.cpp||In constructor 'Zfraction::Zfraction()'
    C:\Gary\tuto\Zfraction.cpp|4|error: expected '(' before '=' token|
    C:\Gary\tuto\Zfraction.cpp|4|error: expected '{' before '=' token|
    C:\Gary\tuto\Zfraction.cpp|4|error: expected unqualified-id before '=' token|
    ||=== Build finished: 3 errors, 0 warnings (0 minutes, 2 seconds) ===|

  16. #16
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    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
    #ifndef ZFRACTION_H_INCLUDED
    #define ZFRACTION_H_INCLUDED
     
    class Zfraction
    {
    public:
        Zfraction(int numerateur = 0, int denominateur = 1);
        ZFraction & operator+=(ZFraction const& rhs);
    private:
        int m_numerateur;
        int m_denominateur;
    };
     
    ZFraction const operator+(ZFraction const& lhs, ZFraction const& rhs);
     
    #endif // ZFRACTION_H_INCLUDED
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  17. #17
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    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
    #ifndef ZFRACTION_H_INCLUDED
    #define ZFRACTION_H_INCLUDED
     
    class Zfraction
    {
    public:
        Zfraction(int numerateur = 0, int denominateur = 1);
        ZFraction & operator+=(ZFraction const& rhs);
    private:
        int m_numerateur;
        int m_denominateur;
    };
     
    ZFraction const operator+(ZFraction const& lhs, ZFraction const& rhs);
     
    #endif // ZFRACTION_H_INCLUDED
    Ca ne fonctionne toujours pas

  18. #18
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Pourrais-tu nous montrer .cpp qui va avec ton dernier .h ?

  19. #19
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    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
    #include <iostream>
    #include <string>
    #include "Zfraction.h"
     
    using namespace std;
     
    int main()
    {
     
        Zfraction a(4,5);      //Déclare une fraction valant 4/5
        Zfraction b(2);
        Zfraction c,d;
     
    return 0;
    }

    Zfraction.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "Zfraction.h"
     
     
    Zfraction(numerateur(0), denominateur(1): m_numerateur(numerateur), m_denominateur(denominateur)
    {
    }

    Zfraction.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
    #ifndef ZFRACTION_H_INCLUDED
    #define ZFRACTION_H_INCLUDED
     
    class Zfraction
    {
    public:
        Zfraction(int numerateur = 0, int denominateur = 1);
    private:
        int m_numerateur;
        int m_denominateur;
    };
     
    Zfraction const operator+(Zfraction const& lhs, Zfraction const& rhs);
     
    #endif // ZFRACTION_H_INCLUDED

  20. #20
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Zfraction::Zfraction(int numerateur /*= 0*/, int denominateur /*= 1*/)
    : m_numerateur(numerateur)
    , m_denominateur(denominateur)
    {}
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [POO] héritage de constructeurs
    Par benkunz dans le forum Langage
    Réponses: 2
    Dernier message: 03/04/2007, 15h29
  2. [POO]Probléme de constructeur virtuel surchargé
    Par Laurent Dardenne dans le forum Delphi
    Réponses: 10
    Dernier message: 15/08/2006, 12h19
  3. [POO] Surcharge de constructeur
    Par loganblack dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2006, 12h26
  4. [POO] surcharger le constructeur
    Par wdionysos dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 15h42
  5. [POO]héritage du constructeur de la classe parente
    Par new_wave dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2006, 14h25

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