c++ 在运行时重写同一类方法

evrscar2  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(180)

假设我在c++中有一个这样的类:

class MyClass
{
    public:
        int MyMethod1 (/*Some Cool Args*/)
        {
            //do something
        }
        int MyMethod2 (/*More Args*/)
        {
            //do something
        }
        .
        .
        .
        int MyMethodN (/*More Args*/)
        {
            //do something
        }
}

现在,假设根据对象在运行时的状态,我需要使用MyMethode1,MyMethode2,...或MyMethodeN,它们基本上都是一样的,但是它们基于对象在运行时的状态改变了它们的方式。

  • 我的问题是 *:有没有一种方法可以让...
class MyClass
{
    public:
        int MyMethod (/*Some Cool Args*/)
        {
            //do something in consideration to the current object state
        }
}

基本上我的意思是,如果一个多态行为可以在同一个类中实现,而不需要调用派生对象或使用指向成员方法的指针,也不需要一个if序列或开关

u5rb5r59

u5rb5r591#

我认为你描述的情况不是一个很好的多态性的情况。我认为你应该考虑使用组合沿着策略模式。
这个概念是将一些工作或算法封装在一个函数或可调用对象中,您有几个函数或可调用对象,然后根据父状态选择使用哪一个。你可以在std::function中保存一个指向指针或可调用对象(functor)的引用,它可以是父类的成员。
或者,更简单地说,如果系统不需要这样的复杂性,你可以有成员函数,其中包含解析新输入的每个方法,并选择哪一个与if语句一起使用。

相关问题