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

Langage C++ Discussion :

Operateur template template ?


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Operateur template template ?
    Bonjour, est-il possible de définir le type de retour d'un opérateur template comme template ?

    Ex :
    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
     
    template<class A>class peuimporte
    {
     
      bla bla
     
      template<class B>B operator[](unsigned int);
     
      bla bla
     
    };
     
    //Déclaration
    template<class A>template<class B>B peuimporte::operator[](unsigned int i)
    {
      bla bla
    }
     
    //Utilisation :
     
    peuimporte<unautretypeauhasard> *X;
    montype x=(*X)<montype>[n];
    Je ne vous cache pas que je si je viens ici j'ai déjà essayé l'écriture, ça ne compile pas : "type 'montype' inattendu"

    Alors mon problème existe-t-il une écriture que j'ai loupé ?

    Ca m'embêterais beaucoup de ne pas pouvoir définir le type de retour d'un opérateur comme template, que ce soit dans un template ou dans n'importe quelle classe d'ailleurs...

    Merci pour votre réponse.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour et bienvenu,
    Si le paramètre template ne peut être déduit des arguments, alors effectivement il faut le préciser lors de l'appel de la fonction. Et pour un opérateur, la spécification de ce type peut se faire par l'utilisation de la version 'longue' de l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    peuimporte<unautretypeauhasard> *X;
    montype x=X->operator[]<montype>(n);
    Ce qui devient tout de suite beaucoup moins intéressant comme écriture...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    L'écriture est tellement improbable que j'opte pour l'option d'oublier l'opérateur et mettre un nom de fonction moins pertinent mais plus agréable à l'écriture.

    Merci beaucoup.

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

Discussions similaires

  1. Problème avec template template template
    Par oodini dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2012, 14h40
  2. Réponses: 4
    Dernier message: 25/06/2009, 00h37
  3. Réponses: 4
    Dernier message: 21/01/2009, 14h39
  4. template > template >
    Par Nomade95000 dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2007, 18h21
  5. template<template<>>
    Par joker34 dans le forum C++
    Réponses: 7
    Dernier message: 25/01/2006, 09h45

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