今回は、C++で(初歩的な?)質問をさせていただきたいと思います。
質問の内容は、タイトルのとおりで、テンプレートクラスの継承についてです。
例えば、基底のテンプレートクラスBaseがあったとして、この基底クラスをpublic継承して、非テンプレートクラスDerivedを作ることを考えます。
大体のコードは以下のようになっています。
template < typename Type1, typename Type2 > class Base { protected: Type1 m_A; Type2 m_B; public: //コンストラクタなどは省略。デストラクタは継承も考えて、仮想関数としてある。 }; class Derived : public Base < std::basic_string < char >, int > { public: //コンストラクタなどは省略。 bool Compare( std::basic_string < char > a ); //std::basic_string < char >との比較を行う。 }; bool Derived::Compare( std::basic_string < char > a ) { return m_A == a; }これで、コンパイルを実行すると、Derived::Compare内で「==型の左オペランドを扱う演算子が見つかりません」というエラーが現れてしまいます。
これにはどこが問題があるのでしょうか?
テンプレートの型を決めたものを継承すること自体が問題なのでしょうか?
ソースコードも要点のみしか書いていなく、わかりづらいかもしれませんがよろしくお願いします。