在 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 必须实现 someFunc 因为它继承了 Ibase,实现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>
,这对于任何可能查看我的代码的未来开发人员来说都是令人困惑和不清楚的。任何的想法 ?