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) { }
};

而且我不需要向孩子的构造函数添加任何代码。是否可以隐式继承它们?要像 in 一样调用它们Base,只需更改名称?预处理器可以在这里被滥用,但还有其他解决方法吗?

4

1 回答 1

8

在符合 C++11 的编译器(标准中的第 12.9 节)中,您实际上可以很容易地做到这一点:

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

这继承了所有构造函数,Base并且等效于您的 class 代码Son

于 2012-05-23T11:41:16.070 回答