我的代码中的一个常见场景是我得到了一个被层次结构中的许多类使用的函子。
为了让所有类都可以访问它并保持 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()();
}
};
我不喜欢这个解决方案,因为它用许多小的仿函数使我的基类变得混乱,这些仿函数只是内部的,即使公众无法访问它们,它们也会降低我的基类的可读性。
你知道这种情况的任何其他解决方案吗?