1

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();

出力は親です。子を返すにはどうすればよいですか。

アドバイスをありがとうございました。

4

2 に答える 2

9

コードのコンパイラ エラーを修正すると、問題なく動作します

于 2011-07-04T08:03:11.943 に答える
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;
}
于 2011-07-04T08:11:36.103 に答える