J'essaie d'apprendre des modèles en C++ et j'ai le code suivant:
#include <stack>
template<typename T>
class myClass : public std::stack<T>{
public:
myClass(void);
myClass(myClass const & src);
virtual ~myClass(void);
myClass & operator=(myClass const & rhs);
};
template<typename T>
myClass::myClass(void) : std::stack<T>(){
}
Mais je ne peux pas comprendre pourquoi j'obtiens ce qui suit lorsque j'essaie de compiler:
test.cpp:17:1: error: 'myClass' is not a class, namespace, or enumeration
myClass::myClass(void) : std::stack<T>(){
^
test.cpp:8:9: note: 'myClass' declared here
class myClass : public std::stack<T>{
^
1 error generated.
Il semble que la définition de la fonction provoque l'erreur, mais je ne sais pas pourquoi j'obtiens cette erreur, elle me semble OK (même si je suppose que ce n'est pas vraiment OK), juste une erreur de syntaxe peut-être? ..
Je compile avec clang ++ -Wall -Werror -Wextra -c.
Qu'est-ce qui pourrait provoquer cette erreur?
Vous devez spécifier le paramètre de modèle pour cela, car myClass
est un modèle de classe.
template<typename T>
myClass<T>::myClass(void) : std::stack<T>() {
// ^^^
}
BTW: : std::stack<T>()
semble être redondant.