7

このようなクラスを作りましょう:

struct Base {
  Base() { ... }
  Base(int) { ... }
  Base(int,string) { ... }
  ...
};

から多くのクラスを継承したいBaseので、

struct Son : public Base {
  Son() : Base() { }
  Son(int) : Base(int) { }
  Son(int,string) : Base(int,string) { }
};

struct Daughter : public Base {
  Daughter() : Base() { }
  Daughter(int) : Base(int) { }
  Daughter(int,string) : Base(int,string) { }
};

子のコンストラクターにコードを追加する必要はありません。それらを暗黙的に継承することは可能ですか?と同じように呼び出すにはBase、名前を変更するだけですか?プリプロセッサはここで悪用される可能性がありますが、他の回避策はありますか?

4

1 に答える 1

8

C ++ 11準拠のコンパイラ(標準では§12.9)では、実際にはこれを非常に簡単に行うことができます。

struct Son : public Base {
  using Base::Base;
};

これはからすべてのコンストラクターを継承しBase、クラスのコードと同等Sonです。

于 2012-05-23T11:41:16.070 に答える