gpt4 book ai didi

c++ - 在哪里定义许多派生类使用的仿函数?

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:48 24 4
gpt4 key购买 nike

我的代码中的一个常见场景是我得到了一个被层次结构中的许多类使用的仿函数

为了让所有类都可以访问它并保持 DRY,我通常将它定义为我的基类的一个 protected 内部结构,如下所示:

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()();
}
};

我不喜欢这个解决方案,因为它使我的基类与许多小仿函数混杂在一起,这些仿函数仅供内部使用,即使公众无法访问它们,它们也会降低我的基类的可读性。

您知道这种情况的其他解决方案吗?

最佳答案

只需在新文件中实现仿函数 (BaseClassFunctors.cpp + BaseClassFunctors.h)。将它们放入带有可选子命名空间(例如命名空间 main.internal)的命名空间中。

现在您可以将头文件包含在您想要的任何派生类中,而不会弄乱基类头文件。

关于c++ - 在哪里定义许多派生类使用的仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10697854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com