C ++でインターフェース(抽象クラス)を使用して、インターフェースを継承するクラスよりも強制的に演算子==を実装する必要があります。この状況を考慮してください:
class IBase
{
virtual void someFunc() const = 0;
}
class CInheritClass : public IBase
{
virtual void someFunc() const;
virtual bool operator== ( const CInheritClass& obj ) const;
}
void main()
{
CInheritClass instance;
}
クラス CInheritClass は、Ibase を継承するため someFunc を実装する必要があります。実装virtual bool operator== ( const CInheritClass& obj ) const;
は必須ではありません。継承者 X が実装する必要がある方法で IBase クラスを変更したい
virtual bool operator== ( const X& obj ) const
次のコードが機能します。
template<class X>
class IBase
{
virtual void someFunc() const = 0;
virtual bool operator== ( const X& obj ) const = 0;
}
class CInheritClass : public IBase<CInheritClass>
{
virtual void someFunc() const;
virtual bool operator== ( const CInheritClass& obj ) const;
}
しかし、私はテンプレートを使用しないソリューションを求めています.IBaseを実装したいすべてのクラスは、それ自体をテンプレートクラスとしてIBaseを継承する必要がありclass X : public IBase<X>
ます. 何か案が ?