2011-08-07 9 views
21

Tengo problemas para declarar una clase de plantilla. Probé varias combinaciones ilegibles y no sensuales.Error 'X no es una plantilla'

template <class C, class M > 
class BlockCipherGenerator : public KeyGenerator 
{ 
    ... 
    private: 
     M <C> m_cipher; 
}; 

Y

template <class C, class M > 
class BlockCipherGenerator : public KeyGenerator 
{ 
    typedef typename C::value_type CIPHER; 
    typedef typename M::value_type MODE; 
    private: 
     MODE <CIPHER> m_cipher; 
}; 

Respuesta

37

Es lo que dice.

La lista de parámetros de la plantilla dice que M is a class, not a template.

Si usted dice que es una plantilla de clase , then everything's fine:

template <class C, template <class C> class M> 
class BlockCipherGenerator : public KeyGenerator 
{ 
     M<C> m_cipher; 
}; 

Recuerde, es algo así como std::vectorno una clase, pero una plantilla de clase. Algo así como std::vector<int> es una clase (tipo).

+0

¡Muchas gracias! Creo que en realidad lo tuve, pero dejo que los errores en el archivo CPP me distraigan. – jww

+0

@noloader: Ningún problema en absoluto. :) –

Cuestiones relacionadas