2010-05-15 6 views
4

Courir v3.4.6 gcc sur la v1.8.8 Botan je reçois l'erreur de compilation suivant la construction de ma demande après avoir construit avec succès Botan et l'exécution de son auto-test:Quel problème de modèles C++ se passe avec cette erreur?

../../src/Botan-1.8.8/build/include/botan/secmem.h: In member function `Botan::MemoryVector<T>& Botan::MemoryVector<T>::operator=(const Botan::MemoryRegion<T>&)': 
../../src/Botan-1.8.8/build/include/botan/secmem.h:310: error: missing template arguments before '(' token 

Quelle est cette erreur du compilateur me dit? Voici un extrait de secmem.h qui comprend la ligne 310:

[...] 
/** 
* This class represents variable length buffers that do not 
* make use of memory locking. 
*/ 
template<typename T> 
class MemoryVector : public MemoryRegion<T> 
    { 
    public: 
     /** 
     * Copy the contents of another buffer into this buffer. 
     * @param in the buffer to copy the contents from 
     * @return a reference to *this 
     */ 
     MemoryVector<T>& operator=(const MemoryRegion<T>& in) 
     { if(this != &in) set(in); return (*this); } // This is line 310! 
[...] 
+0

@Clever -1er: Vous venez de donner 8 points qu'il n'aurait pas eu pour ne pas avoir expliqué votre problème avec la question. –

+0

@RubenBartelink: 3 en fait. – sepp2k

+0

@ sepp2k: Vrai - temporairement oublié mon esprit ... –

Répondre

10

Modifier à ceci:

{ if(this != &in) this->set(in); return (*this); } 

Je soupçonne que la fonction set est définie dans la classe de base? Les noms non qualifiés ne sont pas recherchés dans une classe de base qui dépend d'un paramètre de modèle. Dans ce cas, le nom set est probablement associé au modèle std::set qui nécessite des arguments de modèle.

Si vous qualifiez le nom avec this->, le compilateur est explicitement dit de regarder dans la portée de la classe et inclut des classes de base dépendantes dans cette recherche.

+1

Dammit, Johannes! Je pensais que tu étais étudiant ?! N'y a-t-il pas d'autre chose que vous préféreriez faire un samedi soir alors que vous collecterez des points de rep de vieux hommes? ':)' +1 de ma part de toute façon. – sbi

+1

@sbi je ne suis pas tellement partie-compatible :) –

+3

faire la fête est la seule chose qui prend beaucoup moins de 10 000 heures à maîtriser. – wilhelmtell

Questions connexes