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 :

Operateurs pour Structures


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut Operateurs pour Structures
    Bonjour,

    Je voudrais en fait avoir des renseignement :
    Je sais qu'il est possible de faire de l'orienté objet en C pur. Mon intention n'est pas d'en faire, mais je voudrait savoir s'il était possible de definir des operateurs pour des structures.

    Admettons l'exemple bidon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct VecteurVecteur;
    struct Vecteur
    {
        double X;
        double Y;
        double Z;
    };
    Je voudrais faire quelque chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Vecteur premier;
    premier.X = 0;
    premier.Y = 0;
    premier.Z = 0;
     
    Vecteur deuxieme = premier;
    Sauf que, j'ai vraiment du mal a me renseigner : toutes mes recherches aboutisse a "comment gerer une structure en C" ou "les operateurs . et -> pour les structures" ....

    Bref, rien que ne me reponde vraiment.

    Je solicite donc votre aide :

    Peut-on faire une (re)definition d'operateurs pour une structure en C ?
    Si oui, pourrais je avoir un exemple (en accord avec mon exemple bidon).

    Merci de m'avoir lu,

    Bonne soirée

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    En C, on ne peut faire de redéfinir ou de surcharger les opérateurs.
    Les structures supportent 3 opérateurs sizeof, & (adresse de) et = (l'opérateur . permet l'accès aux membres, mais ne fait pas d'opération sur la structure dans son ensemble)

    Il est donc légitime d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vecteur deuxieme = premier;

  3. #3
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut


    Ok ....
    Et pour les autres operateurs ?

    +=
    ++
    --
    *
    ...

    Qu'en est-il ?

    Comment savoir que l'operateur + sur une structure fera ce que je souhaiterai ?
    Ou meme un quelconque operateur ?

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Bin pour les autres opérateur j'ai bien peur qu'il ne te faille faire des fonctions maison pour faire des opérations sur tes vecteurs :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
     
    typedef struct
    {
        double X;
        double Y;
        double Z;
    }
    Vecteur;
     
     
    Vecteur addition_vecteur (const Vecteur * a, const Vecteur * b)
    {
       Vecteur ret;
     
     
       ret.X = a->X + b->X;
       ret.Y = a->Y + b->Y;
       ret.Z = a->Z + b->Z;
     
     
       return ret;
    }
     
     
    int main (void)
    {
       Vecteur premier;
       Vecteur second;
       Vecteur ensemble;
     
     
       premier.X = 5;
       premier.Y = 5;
       premier.Z = 2;
     
       second.X = 15;
       second.Y = 20;
       second.Z = 8;
     
     
       ensemble = addition_vecteur (&premier, &second);
       printf ("X:%f, Y:%f, Z:%f\n", ensemble.X, ensemble.Y, ensemble.Z);
     
     
       return EXIT_SUCCESS;
    }

    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    C'est justement ce que je craignais ...
    Bon ben tant pis, on fait ce qu'on peut avec ce qu'on a

    Merci a vous, bonne soirée

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

Discussions similaires

  1. aide pour structure et liste chainée
    Par monsieur77 dans le forum C
    Réponses: 8
    Dernier message: 20/11/2007, 17h25
  2. Sens de l'operateur = pour un objet
    Par hegros dans le forum WinDev
    Réponses: 3
    Dernier message: 06/12/2006, 15h35
  3. [XSLT] XSL unique pour structure XML différente.
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 24/10/2006, 10h08
  4. conseil pour structurer un xml
    Par jbat dans le forum Delphi
    Réponses: 2
    Dernier message: 14/07/2006, 07h49
  5. Réponses: 6
    Dernier message: 26/06/2006, 10h29

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