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 :

Erreur lors de l'appel du setter avec un template simple


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut Erreur lors de l'appel du setter avec un template simple
    Bonjour,

    je commence à m'intéresser au template en c++, mais j'ai quelque difficultés.
    sur la classe suivante :

    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
     
     
    #ifndef FIELD_H
    #define FIELD_H
     
    #include <string>
     
    using namespace std;
     
    template <class T>
    class Field
    {
        public:
            Field();
            void setValue(T);
            T getValue();
     
        private:
            T value;
    };
     
    template<class T>
    void Field<T>::setValue(T val){
        value = val;
    }
     
    template<class T>
    T Field<T>::getValue(){
        return value;
    }
    J'ai une erreur lors de l'appel au setter de ma classe :

    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
     
    int main()
    {
     
        Field<int> f1();
        f1.setValue(10);
     
        cout << f1.getValue() << endl;
     
        Field<string> f2();
        f2.setValue("test f2");
     
        cout << f2.getValue() << endl;
     
        return 0;
    }
    à la ligne : f1.setValue(10); le compilateur me donne l'erreur suivante :
    error: request for member `setValue' in `f1', which is of non-class type `Field<int> ()()'

    Je pense donc qu'il ne considère pas que ma classe setValue ne puisse prendre d'argument int ( ni string, il me ressort la même erreur lorsque je fait un setValue sur le string "test f2" : non-class type `Field<std::string> ()() )

    Quelqu'un pourrait il m'éclairer sur mon problème s'il vous plait ?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    J'ai résolu mon erreur, il fallait que j'enlève les parenthèse après la déclaration de ma classe :

    Field<int> f1(); => Field<int> f1;

    par contre je ne vois pas ce que ca change....

    Quelqu'un pourrait il m'expliquer ?

    Merci

  3. #3
    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,

    est une déclaration de fonction.

    MAT.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    je pensait que c'était pour faire appel au constructeur par défaut.

    Merci

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Juste une petite remarque au passage : c'est une mauvaise idée d'utiliser un using namespace dans un fichier d'en-tête comme tu le fais ici.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/07/2009, 22h50
  2. erreur lors de l'appel de service GWT avec Spring
    Par decksroy dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 06/05/2009, 19h20
  3. Erreur lors de l'appel d'une page executée avec AJAX
    Par jt-tronix dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2006, 17h56
  4. Erreur lors de l'appel d'une DLL créée avec Visual
    Par WELCOMSMAIL dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/09/2006, 15h53
  5. Erreur lors de l'appel d'un page ASP
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 27/08/2004, 15h17

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