'X不是模板'错误

jww*_*jww 28 c++ gcc templates

我在声明模板类时遇到问题.我尝试了一些不易读和非感性的组合.

template <class C, class M >
class BlockCipherGenerator : public KeyGenerator
{
  ...
  private:
      M < C > m_cipher;
};
Run Code Online (Sandbox Code Playgroud)

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;
};
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 44

这就是它所说的.

您的模板参数列表表示它M是a class,而不是atemplate.

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

template <class C, template <class C> class M>
class BlockCipherGenerator : public KeyGenerator
{
      M<C> m_cipher;
};
Run Code Online (Sandbox Code Playgroud)

请记住,类似std::vector不是一个类,而是一个类模板.类似于std::vector<int>类(类型)的东西.