C++ 在运行时c++;

C++ 在运行时c++;,c++,C++,假设我在c++中有这样一个类: class MyClass { public: int MyMethod1 (/*Some Cool Args*/) { //do something } int MyMethod2 (/*More Args*/) { //do something } . . .

假设我在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
        }
}

基本上我的意思是,如果一个多态行为可以在同一个类中实现,而不必调用派生对象或使用指向成员方法的指针,或具有一系列ifs或开关,那么我认为您描述的情况对于多态性来说不是一个很好的例子。我认为你应该考虑使用构图和策略模式。

这个概念是将一些工作或算法封装在一个函数或可调用对象(其中有多个)中,然后根据父级状态选择要使用的工作或算法。可以在std::function中保存对指针或可调用对象(functor)的引用,该函数可以是父类的成员


或者,更简单地说,如果系统不要求如此复杂,您可以使用包含解析新输入的每个方法的成员函数,并选择与if语句一起使用的方法。

逻辑执行“基于状态的内容”必须存在于某个地方…避免使用大量基本上做相同事情但改变其执行方式的函数。创建对象并使用动态分派。您需要一个分派表,通常只是一个简单的
开关
语句。在internet上搜索“c++双重分派”和“c++分派”。