2011-08-07 21 views
21

テンプレートクラスの宣言に問題があります。私はいくつかの読みにくくて官能的でない組み合わせを試みました。'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; 
}; 

答えて

37

それが言っていることです。

テンプレートパラメータリストには、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>のようなものはクラス(型)です。

+0

ありがとうございました!私は実際にそれを持っていたと思うが、私はCPPファイルのエラーで私の気が散る。 – jww

+0

@noloader:まったく問題ありません。 :) –

関連する問題