La syntaxe pour le constructeur dans la classe de modèle

Je suis en train de créer un générique tampon circulaire modèle mais il y a une erreur de syntaxe que je ne comprends pas. L'erreur est dans mon constructeur, mais il semble que j'ai paramétré le destructeur de la même façon et que l'on travaille. J'ai suivi l'exemple de Stroustrup C++, et il utilise un paramètre avant l'opérateur de résolution de portée et aussi dans le nom de la fonction, ainsi que je l'ai. Je suis également certain il n'y a pas de dépendances circulaires, parce que je ne suis qu'à la compilation d'un fichier. Aussi la mise en œuvre et les déclarations sont dans le même fichier (CircBuf.h) et il n'y a pas de correspondant .fichier cpp, le lien ne devrait pas être un problème non plus. J'ai essayé d'ajouter le mot clé "inline" comme par cette solution et j'obtiens la même erreur.

/* CircBuf.h */
template<typename T> class CircBuf {
  //don't use default ctor                                                                                                                                               
  CircBuf();

  int size;
  T *data;
public:
  CircBuf(int);
  ~CircBuf();
};

template<typename T> CircBuff<T>::CircBuf<T>(int i) {
  data = new T[i];
}
template<typename T> CircBuf<T>::~CircBuf<T>() {
  delete data;
}

makefile

all:
        g++ -g -pedantic CircBuf.h -o prog

compilateur-erreur

CircBuf.h:13:22: error: CircBuff does not name a type
Vous avez écrit CircBuff plutôt que CircBuf dans une instance. C'est ce que le compilateur essaie de vous dire.

OriginalL'auteur xst | 2012-06-07