私のコードの一般的なシナリオは、階層内の多くのクラスで使用されるファンクターを取得したことです。
すべてのクラスがアクセスできるようにし、DRYを維持するために、私は通常、次のように基本クラスの保護された内部構造体として定義します。
class Base
{
protected:
struct CommonFunctor
{
bool operator()()
{
return true;
}
};
};
class DerivedA : public Base
{
void FooA()
{
bool test = CommonFunctor()();
}
};
class DerivedB : public Base
{
void FooB()
{
bool test = CommonFunctor()();
}
};
このソリューションは、基本クラスに多くの小さなファンクターが散らかっていて、内部のみであり、一般に公開されていなくても、基本クラスの可読性が低下するため、このソリューションは好きではありません。
このシナリオの他の解決策を知っていますか?