0

私は基本クラスを持っています

class base {
  public:
    base();
    int someData;
    virtual void foo(){
      std::cout << someData;
    }
};

およびいくつかの派生クラス

class derived : public base {
  public:
    derived();
    void foo(){
     std::cout << someData * 5;
  }
};

基本的に同じ種類のデータを持っていますが、このデータに対する操作は異なります。オブジェクトの詳細を知る必要のない別のクラスがあります。必要なのは、データを設定して派生した foo() を呼び出すことだけです。

class useData {
  public:
    useData();

    base x;
    int do() { x.someData = 5; return x.foo(); }
};

「useData」を可能な限り汎用にしたいので、その定義で派生クラスの代わりに基本クラスを使用しています。もちろん、このシナリオでは、派生メソッドではなく基本メソッドを呼び出します。コードを書き直すにはどうすればよいですか? (型チェックなどを行わずに) 派生メソッドを自動的に呼び出すにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

1

ポリモーフィズムを使用するには、いくつかのポインターまたは参照が必要です。したがってuseData、変数xでは として宣言する必要がありbase *ます。newその後、任意の派生クラスでを使用して作成できます。ポリモーフィズムは期待どおりに機能します。

于 2013-10-10T16:49:25.623 に答える