让我们这样上课:
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) { }
};
而且我不需要向 child 的构造函数添加任何代码。是否可以隐式继承它们?要像在 Base
中一样调用它们,只需更改名称即可?预处理器可能会在这里被滥用,但还有其他解决方法吗?
最佳答案
在兼容 C++11 的编译器(标准中的第 12.9 节)中,您实际上可以很容易地做到这一点:
struct Son : public Base {
using Base::Base;
};
这继承了 Base
的所有构造函数,等同于类 Son
的代码。
关于c++ - 如何避免样板代码构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719015/