调用父函数内覆盖子功能(call overwritten child function within

2019-09-27 08:51发布

是否有可能在C ++从父函数调用子函数。

让我们举个例子:父类定义的功能(分析)的一般工作流程。 然后工作流调用其表示流(parseElementA)的一部分不同的方法。 这些功能可以通过子类覆盖,如果不是非标准功能,这是母公司的部分应使用。

我的问题是:我创建了一个子对象和执行工作流功能(解析)。 当覆盖功能(parseElementA)的工作流程功能中调用它调用从父,而不是从孩子的功能。 我能做什么,因此调用子覆盖功能。

    class Parent {
      public:
        void parse() { parseElementA(); }
        virtual void parseElementA() { printf("parent\n"); }
    };

    class Child : public Parent {
      public: 
        void parseElementA() { printf("child\n"); }
    };

    Child child;
    child.parse();

输出是父。 我能做些什么,它返回的孩子。

非常感谢您的任何意见。

Answer 1:

从您的代码修复编译器错误后, 它工作正常 。



Answer 2:

#include <cstdio>

class Parent {
        public:
                void parse() { parseElementA(); }
                virtual void parseElementA() { printf("parent\n"); }
};

class Child : public Parent {
        public:
                void parseElementA() { printf("child\n"); }
};

int main() {

   Child child;
   child.parse();

   return 0;
}


文章来源: call overwritten child function within parent function