Bonjour,

Je suis en train de coder une bibliothèque s'occupant du registre Windows, afin de l'utiliser dans mon projet en cours. J'ai donc pensé à créer tout d'abord une classe template "Key" (puisque les clés peuvent être de n'importe quel type), définie de la manière suivante :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template < typename T >
    class Key
    {
        public:
            typedef typename T Type;
 
            explicit Option(const std::string&);
            ~Option();
 
            Type get(void) const;
            void set(Type);
 
        private:
            HKEY m_key;
    };
Conséquemment, j'ai créé par la suite une méthode à ma classe "Registry", permettant de récupérer un pointeur de Key, récupérée à partir du "chemin" courant et du nom de la clé, passé en paramètre à la méthode.

Et c'est là que le problème arrive : comment déclarer et définir cette méthode (getKey()), pour préserver le caracètre "template" de la classe Key ?

J'ai bien pensé à cela :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Registry
{
     //...
     template < typename T >
            Key < typename T > *getKey (const std::string&) const;
     //...
};
 
//Et donc sa définition :
template < typename T >
       Key < typename T > *Registry::getKey (const std::string &keyName) const
{
     //...
}
Mais bien évidemment, je ne suis sûr de rien.

A ce moment là, comment appelerait-on la méthode dans le code ?

Serait-ce :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
Key < bool > *booleanKey = reg.getKey < bool >("Boolean");
?

Merci d'avance.

P.S: Tout conseil, concernant le code, est le bienvenu, bien évidemment