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 :

Problème de retour covariant


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Par défaut Problème de retour covariant
    Bonjour a tous,

    voilà, dans mon programme, j'utilise différentes classes templates et j'aimerai effectuer un retour de type covariant sur elle. Seulement, mon compilateur (gcc4.1) me renvoit ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     tinyConnection.h:73: error: invalid covariant return type for 
    'virtual libterp::tinyXmlRpcCall<std::vector<libterp::dict, std::allocator<libterp::dict> >&> 
    libterp::tinyXmlRpcConnection::read(const std::string&, const std::vector<int, std::allocator<int> >&, 
    const std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, 
    std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, const libterp::dict&)'
    tinyConnection.h:50: error:   overriding 
    'virtual libterp::tinyCall<std::vector<libterp::dict, std::allocator<libterp::dict> >&> 
    libterp::tinyConnection::read(const std::string&, const std::vector<int, std::allocator<int> >&
    , const std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, 
    std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, const libterp::dict&)'
    Mon code source est le suivant:

    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
    //Mes classes templates qui servent de retour
    template <class T>
    class tinyCall
    {
    	public:
    		virtual ~tinyCall(){};
    		virtual T getResult();
    };
    template <class T>
    class tinyXmlRpcCall : public tinyCall<T>
    {
    	public:
    		tinyXmlRpcCall(xmlrpc_c::rpcPtr call, xmlrpc_c::connection& connection);
    		T getResult();
    };
     
     
    /Ma classe de base, renvoie le type de base
    class tinyConnection
    {
    	public: 
    		virtual tinyCall<vector<dict>&> read(const string& object, const vector<int>& ids, 
    									   const vector<string>& fields, const dict& context) = 0;
    ...
    }
     
    //Ma classe déricée, renvoie le type dérivé
    class tinyXmlRpcConnection : public tinyConnection
    {
    	public:
    		tinyXmlRpcCall<vector<dict>&> read(const string& object, const vector<int>& ids, 
    										   const vector<string>& fields, const dict& context);
    ...
    }

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Pourrais-tu essayer de fournir un code qui compile tel quel ?
    Autant c'est relativement rapide de copier-coller un morceau de code pour reproduire une erreur, autant passer 10 mn à le modifier et corriger ça n'aide pas pour localiser le problème

    MAT.

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Pour utiliser un retour covariant, il faut retourner des pointeurs ou des références, pas des valeurs.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Par défaut
    Mat007> J' ai justement fait du copier/coller, et n'est pas chercher à nettoyer mon code. Et le fait que ça ne compile pas est justement le problème.

    Jean-Marc.Bourguet> J'ai modifié mon code, et cela fonctionne désormais. Qui plus est, me parait on ne peut plus logique quand on y réfléchit .Merci pou tout

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par bountykiller
    Mat007> J' ai justement fait du copier/coller, et n'est pas chercher à nettoyer mon code. Et le fait que ça ne compile pas est justement le problème.
    Salut,

    Désolé je me suis mal exprimé.

    Ce que je voulais dire c'est que là si moi je copie-colle le code que tu donnes dans un fichier et que j'essaye de le compiler ça fait n'importe quoi
    Et si je veux reproduire l'erreur pour laquelle tu demandes de l'aide je vais y passer 10 mn...

    Alors que si tu fournis un code qui directement, sans modification, dès qu'on le compile, produit l'erreur qui pose problème ça facilite pas mal les choses.

    MAT.

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

Discussions similaires

  1. Problème de retour aprés l'appel d'une popup
    Par PADAWANN33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/02/2006, 15h53
  2. [VC++] Comment autoriser les retours covariants ?
    Par Yellowmat dans le forum MFC
    Réponses: 1
    Dernier message: 28/11/2005, 11h46
  3. Retour covariant : Copie de this.
    Par Zenol dans le forum C++
    Réponses: 24
    Dernier message: 27/10/2005, 23h13
  4. [MySQL] problème de retour à la ligne.
    Par NPortmann dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/09/2005, 14h43
  5. [Struts] Problème de retour chariot
    Par pimousse76 dans le forum Struts 1
    Réponses: 5
    Dernier message: 22/11/2004, 15h39

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