'X不是模板'错误

时间:2011-08-07 01:55:09

标签: c++ templates gcc

我无法声明模板类。我已经尝试了许多不可读和非感性的组合。

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 个答案:

答案 0 :(得分:42)

这就是它所说的。

您的模板参数列表显示M is a class, not a template

如果你说它是一个模板then everything's fine

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

请记住,std::vector之类的内容不是类,而是类模板。像std::vector<int>这样的东西是一个类(类型)。