Méthode template : déclaration/définition et appel ?
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:
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:
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:
Key < bool > *booleanKey = reg.getKey < bool >("Boolean");
?
Merci d'avance.
P.S: Tout conseil, concernant le code, est le bienvenu, bien évidemment :)