Ошибка "X не является шаблоном"
У меня возникли проблемы с объявлением класса шаблона. Я пробовал несколько недоразумных и нечувствительных комбинаций.
template <class C, class M >
class BlockCipherGenerator : public KeyGenerator
{
...
private:
M < C > m_cipher;
};
и
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;
};
Ответы
Ответ 1
Это то, что он говорит.
В списке параметров шаблона указано, что M
- это class
, а не template
.
Если вы скажете, что это шаблон класса, то все отлично:
template <class C, template <class C> class M>
class BlockCipherGenerator : public KeyGenerator
{
M<C> m_cipher;
};
Помните, что-то вроде std::vector
не является классом, а шаблоном класса. Что-то вроде std::vector<int>
- это класс (тип).