C++ 我是否应该在C+;中创建只在一个函数上不同的子类+;?

C++ 我是否应该在C+;中创建只在一个函数上不同的子类+;?,c++,C++,我有一个几乎完全实现的基类,除了一个虚拟函数,默认情况下它什么都不做 现在,在我的问题中,我将有许多看起来非常相似的对象,但是在调用函数时,它们的行为确实不同 因此,我找到的当前解决方案是,创建几十个派生自同一基类的子类,只重写一个公共函数。这确实管用,但看起来很傻 有什么像样的解决方案吗?当你没有给我们任何上下文(类做什么?函数名是什么?)时,很难给你提示,但你是对的-乍一看,如果你真的有几十个子类,这看起来确实很傻 也许您正在寻找的解决方案是使用函数指针?如果它只是一个类,那么如果有一个指向

我有一个几乎完全实现的基类,除了一个虚拟函数,默认情况下它什么都不做

现在,在我的问题中,我将有许多看起来非常相似的对象,但是在调用函数时,它们的行为确实不同

因此,我找到的当前解决方案是,创建几十个派生自同一基类的子类,只重写一个公共函数。这确实管用,但看起来很傻


有什么像样的解决方案吗?

当你没有给我们任何上下文(类做什么?函数名是什么?)时,很难给你提示,但你是对的-乍一看,如果你真的有几十个子类,这看起来确实很傻

也许您正在寻找的解决方案是使用函数指针?如果它只是一个类,那么如果有一个指向某个全局函数的函数指针可能会更好?使用该解决方案,您不需要从基类派生任何东西


您还可以实现基类函数中的所有选项,并使用其他参数调用它,这些参数将提示要使用的版本。再一次-当你做的事情没有任何提示时,很难告诉你什么更好。

当你没有给我们任何上下文时,很难给你提示(类是做什么的?函数名是什么?),但是你是对的-乍一看,如果你真的有几十个子类,这看起来确实很愚蠢

也许您正在寻找的解决方案是使用函数指针?如果它只是一个类,那么如果有一个指向某个全局函数的函数指针可能会更好?使用该解决方案,您不需要从基类派生任何东西


您还可以实现基类函数中的所有选项,并使用其他参数调用它,这些参数将提示要使用的版本。再一次-当你做的事情没有任何提示时,很难告诉你什么更好。

当你没有给我们任何上下文时,很难给你提示(类是做什么的?函数名是什么?),但是你是对的-乍一看,如果你真的有几十个子类,这看起来确实很愚蠢

也许您正在寻找的解决方案是使用函数指针?如果它只是一个类,那么如果有一个指向某个全局函数的函数指针可能会更好?使用该解决方案,您不需要从基类派生任何东西


您还可以实现基类函数中的所有选项,并使用其他参数调用它,这些参数将提示要使用的版本。再一次-当你做的事情没有任何提示时,很难告诉你什么更好。

当你没有给我们任何上下文时,很难给你提示(类是做什么的?函数名是什么?),但是你是对的-乍一看,如果你真的有几十个子类,这看起来确实很愚蠢

也许您正在寻找的解决方案是使用函数指针?如果它只是一个类,那么如果有一个指向某个全局函数的函数指针可能会更好?使用该解决方案,您不需要从基类派生任何东西


您还可以实现基类函数中的所有选项,并使用其他参数调用它,这些参数将提示要使用的版本。再一次——当你所做的事情没有任何暗示时,很难说什么更好。

老实说,只要你知道自己在做什么,我就觉得它不傻

当然还有其他选择。例如,利用。通过这样做,您将拥有一个上下文类(类似于您原来的基类),以及一个针对您想要提供的每种特殊行为的策略。在使用时,您将以旧的方式实例化适合您需要的子类。现在,您将使用相同的类,并将正确的策略“插入”到该类中


它并没有减少类的数量,也不是一个更好的设计。这只是一个不同的设计。看看这种方法的优缺点,了解你自己的问题,然后选择一种适合你需要的方法。

老实说,只要你知道自己在做什么,我觉得它并不愚蠢

当然还有其他选择。例如,利用。通过这样做,您将拥有一个上下文类(类似于您原来的基类),以及一个针对您想要提供的每种特殊行为的策略。在使用时,您将以旧的方式实例化适合您需要的子类。现在,您将使用相同的类,并将正确的策略“插入”到该类中


它并没有减少类的数量,也不是一个更好的设计。这只是一个不同的设计。看看这种方法的优缺点,了解你自己的问题,然后选择一种适合你需要的方法。

老实说,只要你知道自己在做什么,我觉得它并不愚蠢

当然还有其他选择。例如,利用。通过这样做,您将拥有一个上下文类(类似于您原来的基类),以及一个针对您想要提供的每种特殊行为的策略。在使用时,您将以旧的方式实例化适合您需要的子类。现在,您将使用相同的类,并将正确的策略“插入”到该类中


它并没有减少类的数量,也不是一个更好的设计。这只是一个不同的设计。看看这种方法的优缺点,了解你自己的问题,然后选择一种适合你需要的方法。

老实说,只要你知道自己在做什么,我觉得它并不愚蠢

当然还有其他选择。例如,利用。这样,您将拥有一个上下文类