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 :

Alias de fonction dans une classe


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Alias de fonction dans une classe
    Bonjour,
    J'ai écrit une classe File dans laquelle j'ai une fonction front() qui renvoie le premier élément de la File. Mais j'ai besoin d'aussi pouvoir l'appeler avec un autre nom max(). J'ai essayé plusieurs méthode pour créer un alias de fonction mais rien ne marche. Je précise que l'alias doit être créer dans la classe et que donc je puisse faire MyFile.max() ou MyFile.front() ça reviendrais au même. Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    template <typename T> class MinMaxList{
     
    T front()
      {
        return list[((MAX_SIZE+(last-1))%MAX_SIZE)];
      };
    }
    Voila le morceaux intéressant du code merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par Jocanal Voir le message
    Bonjour,
    J'ai écrit une classe File dans laquelle j'ai une fonction front() qui renvoie le premier élément de la File. Mais j'ai besoin d'aussi pouvoir l'appeler avec un autre nom max(). J'ai essayé plusieurs méthode pour créer un alias de fonction mais rien ne marche. Je précise que l'alias doit être créer dans la classe et que donc je puisse faire MyFile.max() ou MyFile.front() ça reviendrais au même. Merci d'avance
    Cela n'aurait aucun sens! Le nom des fonctions doit indiquer l'usage auquel elles sont prévue : une fonction nommée front est donc prévue pour permettre d'accéder au premier élément de la file, alors qu'une fonction nommée max est -- de toute évidence -- prévue pour... renvoyer la valeur maximale des éléments que l'on retrouve dans la file.

    Il existe une règle de base qui dit que
    Toute classe doit être le plus facile possible à utiliser correctement et le plus difficile possible à utiliser de manière incorrecte.
    Si tu commences à donner des rôles à tes fonctions qui n'ont rien à voir avec les termes qui les désigne, tu places carrément des pièges à l'utilisation de tes classes. Et c'est très loin d'en faciliter l'utilisation correcte
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Je suis tout a fait d'accord avec toi malheureusement l'énoncé de mon projet nous demande de créer des alias je suis donc un peu obligé :/

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    ben, dans ce cas, pourquoi ne pas tout simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T max(){
       return front();
    }
    car, je t'avouerai que je ne vois pas ce qu'il veut faire en parlant d'alias

    (et si tu me parle de pointeurs de fonctions, je sens que je vais perdre patience )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Ce serait une possibilité c'est d'ailleurs ce que j'ai fait pour l'instant mais je me demande si il n'y a pas d'autre moyen que ce soit avec des pointeurs de fonction ou non

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Jocanal Voir le message
    Ce serait une possibilité c'est d'ailleurs ce que j'ai fait pour l'instant mais je me demande si il n'y a pas d'autre moyen que ce soit avec des pointeurs de fonction ou non
    En voilà un qui cherche les baffes!!!

    Oui, il y aurait moyen que ce soit avec des pointeur de fonction, mais non je ne te montrerai pas comment faire.

    Si tu tiens à faire quelque chose dans le gout, ait au moins le bon sens d'utiliser std::function, sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class MaClasse{
    public:
        T front(){
            /* ... */
        }
        std::function<T()> max= &MaClass::front;
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Non, la bonne solution, c'est bien que max retourne front (ou le contraire), dans la définition de la classe (pour qu'elle soit inline)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Response.Redirect dans une fonction dans une classe
    Par jpower dans le forum ASP.NET
    Réponses: 14
    Dernier message: 24/08/2007, 09h45
  2. Vérifier existence fonction dans une classe
    Par zoparg dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2007, 13h29
  3. [POO] Fonctions dans une classe abstraite
    Par Seth77 dans le forum Langage
    Réponses: 4
    Dernier message: 27/06/2006, 13h21
  4. Appel de fonction dans une classe
    Par saint-pere dans le forum Langage
    Réponses: 3
    Dernier message: 08/05/2006, 22h13
  5. Appel de fonction dans une classe
    Par Seth77 dans le forum Langage
    Réponses: 8
    Dernier message: 16/01/2006, 10h32

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