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 :

Singleton & template


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut Singleton & template
    Bonjour,

    J'ai besoin d'utiliser un singleton dans mon code.
    Celui ci appel une fonction - template.
    Malheureusement cette fonction appelée renvoie une erreur sur le compilateur.
    Je précise que la fonction marche bien et ce n'est qu'a l'appel de cette fonction que j'ai mon erreur.
    *La fonction, en dehors de la classe marche à merveille.
    Les autres fonctions de mon singleton marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TestResult& TestData = TestResult::getInstance(); <- instance de mon singleton
    ...
    TestData.FonctionAutoTest(FunctionLink,float(MAX_FLOAT)); <- fonction buggé à l'appel
    ...
    template<typename Type1, typename Type2> 
    void TestResult::FonctionAutoTest(std::map<std::string, Type1> &Mymap, Type2 valuetest) <- type de la fonction
    Ci dessous l'erreur de retour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    undefined reference to `void TestResult::FonctionAutoTest<double (wl::data::Data::*)(), double>(std::map<std::string, double (wl::data::Data::*)(), std::less<std::string>, std::allocator<std::pair<std::string const, double (wl::data::Data::*)()> > >&, double)'
    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    on peut pas deviner ce qu'est FunctionLink
    t'as une variable testUnifiedData puis testData : on est sensé suivre comment ton "code" ?!

    undefined reference est une erreur de link, il trouve pas l'implémentation de ce que tu lui demandes.
    Est-ce au moins la première erreur en sortie ?

    Si ton programme est vraiment dans cette ordre, il ne peut pas deviner une fonction déclarée après son utilisation.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    FunctionLink est une map contenant l'ID et un pointeur de fonction.
    std::map<std::string, getFonction> FunctionLink;
    FunctionLink["getLa"] = (&Data::La);

    Cf: http://www.developpez.net/forums/d15...ctor-function/
    Même chose mais dans un singleton et en fessant appel à un map & non vector.

  4. #4
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Je n'ai qu'une seule erreur.
    Mes fonctions sont bien déclarées avant leurs utilisations.

    #include....

    Mais la même fonction "FonctionAutoTest" appelée au même endroit, avec les même paramètre, en dehors du singleton marche bien.

  5. #5
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par Bousk Voir le message
    t'as une variable testUnifiedData puis testData
    désolé, erreur de copier coller mais ce n'est pas un erreur dans mon code, juste un erreur de ma part de retranscription sur le site.

  6. #6
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Tu déclares le template de fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    template<typename Type1, typename Type2> 
    void TestResult::FonctionAutoTest(std::map<std::string, Type1> &Mymap, Type2 valuetest)
    dans un .h et tu l'implémentes dans un .c ?

    Si la réponse à cette question est oui, déplace la définition de TestResult::FonctionAutoTest dans le .h
    -- Yankel Scialom

  7. #7
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Vraiment?

    Ce n'est pas contraire au convention de déclaration des classes?
    Je vais essayer.
    Je prépare actuellement un mini code mettant en évidence le problème.

  8. #8
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799

  9. #9
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Super,

    Merci à vous.
    Maintenant mon .h ne ressemble plus à rien mais ça compile et ça tourne...

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

Discussions similaires

  1. [DesignPattern] Singleton et Template
    Par faust73 dans le forum Langage
    Réponses: 4
    Dernier message: 16/09/2014, 23h06
  2. [Résolu]Singleton avec template de fonction
    Par LiquidHuk dans le forum C++
    Réponses: 2
    Dernier message: 05/06/2014, 10h21
  3. Singleton template partagé entre Dll et Exe
    Par eltrex dans le forum Langage
    Réponses: 1
    Dernier message: 07/08/2008, 12h13
  4. Réponses: 3
    Dernier message: 22/11/2006, 21h10
  5. Réponses: 13
    Dernier message: 25/10/2006, 16h17

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