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 :

Classe à l'intérieur d'une classe ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 29
    Par défaut Classe à l'intérieur d'une classe ?
    Bonjour,
    je suis débutante en c++, je dois compléter un programme et j'ai besoin de votre aide

    J'ai une classe CC qui a deux attributs x et y, et j'ai besoin de définir le type ou plutot la classe (je ne sais pas) Borne tel que, la ligne suivant:

    const CC::Borne precision=(CC::Bonne) 1E-12;

    (d'après ce que j'ai compris renvoie une instance de CC (qui est précision ?) , les attributs de cet instance sont égeaux respectivement à

    (x - x* 1E-12) et (y+ y* 1E-12)

    J'attends vos réponses, c'est urgent SVP
    Merci

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Tu dois surcharger l'opérateur + pour la classe Bonne (CC::Bonne).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Bonne
    {
        ...
     
        Bonne operator + (double a)
        {
            Bonne b;
            b.x = x - x * a;
            b.y = y + y * a;
            return b;
        }
     
        ...
    };
    EDIT : Tiens, c'est l'opérateur de transtypage (cast de double vers Bonne) que tu veux surcharger on dirait. Vu ta formule, c'est mal pensé. L'opérateur + convient mieux. Mais bon, le principe ça reste toujours le même.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je dirais plutôt un truc de ce genre:
    Code C++ : 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
    class Bonne
    {
    	...
     
    	Bonne& operator +=(double a)
    	{
    		x -= (x * a); // Ou bien x *= (1-a);
    		y += (y * a); // Ou bien y *= (1+a);
    		return *this;
    	}
     
    	...
    };
     
    Bonne operator+ (Bonne const &obj, double a)
    {
    	Bonne b(obj);
    	b += a;
    	return b;
    }
     
    Bonne operator+ (double a, Bonne const &obj)
    { return obj + a; }
    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.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 29
    Par défaut
    Bonjour,
    Merci pour vos réponse.
    Au fait ce n'est pas ça que je veux vraiment

    voici le code

    Intervalle sqrt (const Intervalle &x){
    const Intervalle::Borne precision=(Inetrvalle::Bonne) 1E-12; ///////CETTE LIGNE
    Intervalle a=x;

    while(fabs(a*a-x)>precision //LIGNE X
    a=(a+x/a)/2;
    return a;
    }
    Sachant que Intervalle est une classe qui a deux attiributs.
    Ici je pense qu'on cherche à surcharger la fonction sqrt pour l'appliquer sur un intervalle, et je moi je dois définir Borne et surcharger fabs (je l'ai déja fait) mais je n'arrive pas à très bien comprendre la ligne où j'ai mis un commentaire, pourriez vous m'expliquer ce qu'elle veut dire SVP ? je pense que cette ligne renvoie un Intervalle [- 1E-12, 1E-12]

    D'après la LIGNE X précision est un intervalle, mais précision = 1E-12 ????

    Je ne comprends plurien aidez moi svp

  5. #5
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Peu importe. L'essentiel c'est que tu apprennes à surcharger les opérateurs. Le C++ ne sait pas comment comparer une "Borne" (precision) avec un "double" (fabs(a*a-x)), comme dans "LIGNE X", ni que faire lorsqu'on demande d'affecter un "double" (1E-12) vers "Borne" (precision), comme dans "CETTE LIGNE" (et inutile de faire un cast dans ce cas). C'est à toi de le dire, en surchargeant respectivement les opérateurs > et =.

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 29
    Par défaut
    Citation Envoyé par Melem Voir le message
    Peu importe. L'essentiel c'est que tu apprennes à surcharger les opérateurs. Le C++ ne sait pas comment comparer une "Borne" (precision) avec un "double" (fabs(a*a-x)), comme dans "LIGNE X", ni que faire lorsqu'on demande d'affecter un "double" (1E-12) vers "Borne" (precision), comme dans "CETTE LIGNE" (et inutile de faire un cast dans ce cas). C'est à toi de le dire, en surchargeant respectivement les opérateurs > et =.
    Merci,
    Au fait les opérateur +, -, *,= .... sont déja surchargés dans la classe Intervalle

Discussions similaires

  1. Exécuter une classe à l'intérieur d'une autre classe
    Par messi1987 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 14/01/2014, 08h16
  2. Réponses: 6
    Dernier message: 14/12/2008, 02h12
  3. Réponses: 4
    Dernier message: 06/04/2008, 18h34
  4. Héritage d'une classe MFC et d'une classe non MFC
    Par Etienne Paquette dans le forum MFC
    Réponses: 7
    Dernier message: 04/12/2007, 20h19
  5. Réponses: 14
    Dernier message: 15/12/2005, 18h46

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