今回は、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内で「==型の左オペランドを扱う演算子が見つかりません」というエラーが現れてしまいます。これにはどこが問題があるのでしょうか?
テンプレートの型を決めたものを継承すること自体が問題なのでしょうか?
ソースコードも要点のみしか書いていなく、わかりづらいかもしれませんがよろしくお願いします。
