在父函数中调用覆盖的子函数

时间:2011-07-04 07:57:56

标签: c++ compiler-errors syntax-error virtual-inheritance

是否可以在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();

输出是父级。我能做什么让它回归孩子。

非常感谢您的任何建议。

2 个答案:

答案 0 :(得分:9)

修复代码中的编译器错误后it works fine

答案 1 :(得分: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;
}