C++相談室 part6
■ このスレッドは過去ログ倉庫に格納されています
0896デフォルトの名無しさん
NGNGbool operator< ( const Base& lhs, const Base& rhs ) {
return lhs.isLessThanBase( rhs );
}
class Base {
virtual bool isLessThanBase( const Base& rhs ) const = 0;
};
class D1 : public Base {
virtual bool isLessThanBase( const Base& rhs ) const { return rhs.isMoreThan(*this); }
template<class T>
bool isMoreThan( const T& rhs ) const { return Compare(*this, rhs)>0; }
};
class D2 : public Base {
virtual bool isLessThanBase( const Base& rhs ) const { return rhs.isMoreThan(*this); }
template<class T>
bool isMoreThan( const T& rhs ) const { return Compare(*this, rhs)>0; }
};
でごっそりとCompareを用意とか。
「ダブルディスパッチ」で検索かけてみると良いと思われ。
■ このスレッドは過去ログ倉庫に格納されています