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 template


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Problème de template
    Bonjour,

    Dans une librairie de traitement d'image libCVD, j'ai trouvé une fonction à base de template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template<> is_aligned <16>(void *ptr)
    .

    J'ai essayé de créer une fonction identique mais visiblement ca ne fonctionne pas, et la compilation me renvoie une erreur.

    Pourquoi dans le librairie compilé, ca ne pose pas de problème et quand j'en crée ma propre fonction, je me fais jeter?

    Si quelqu'un pouvait m'aider.
    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    Qu'as tu essayé de faire exactement ?
    Rajouter une spécialisation ? Dans ce cas il faut recompiler la lib avec ta spécialisation.
    Créer une fonction template ? Problème de syntaxe ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut
    En fait j'ai la définition de la fonction donc j'ai supprimer la librairie et j'ai recréé la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template <> inline bool is_aligned<16>(const void* ptr) {  return ((reinterpret_cast<size_t>(ptr)) & 0xF) == 0;   };

    Et voici l'erreur qu'il me renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :19:35: error: expected initializer before '<' token

  4. #4
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    C'est une spécialisation : un cas particulier d'une fonction template. Si le parametre == 16 c'est cette fonction qui sera appelée, sinon la version générale (ou une autre spécialisation).

    Une spécialisation ne peut pas exister sans le cas général. (Qu'il doit te manquer ici )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // cas général, qui doit être implémenté si besoin
    template <unsigned S> inline bool is_aligned(const void*); 
     
    // spécialisation pour S == 16
    template <> inline bool is_aligned<16>(const void* ptr) {  return ((reinterpret_cast<size_t>(ptr)) & 0xF) == 0;   };
     
    is_aligned<42>(nullptr); // appel le cas général
    is_aligned<16>(nullptr); // appel la spécialisation S == 16

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut
    Ok merci beaucoup.

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

Discussions similaires

  1. [POO] Problème de template
    Par T0xF0x dans le forum Langage
    Réponses: 4
    Dernier message: 05/07/2006, 13h36
  2. [xslt][Javascript] Problème de templates
    Par Dnallabar dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/11/2005, 11h55
  3. problème classes templates...
    Par youp_db dans le forum C++
    Réponses: 3
    Dernier message: 02/11/2005, 13h04
  4. Réponses: 3
    Dernier message: 22/03/2005, 09h13

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