“X不是一个模板”的错误。

33

我在声明一个模板类时遇到了麻烦。我尝试了许多难以阅读和毫无意义的组合。

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个回答

50

这就是它的含义。

你的模板参数列表表明M是一个class,而不是一个template

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

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

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


非常感谢!我想我实际上已经解决了,但是CPP文件中的错误让我分心了。 - jww
@noloader:完全没有问题。 :) - Lightness Races in Orbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接