X不是模板'错误

'X is not a template' error

本文关键字:错误      更新时间:2023-10-16

我在声明模板类时遇到了麻烦。我已经尝试了一些难以读懂和无意义的组合。

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;
};

就是这么说的

您的模板参数列表显示Mclass,而不是template

如果你说它是一个类模板,那么一切都很好:

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

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