Hãy có lớp như thế này:Làm thế nào để tránh các nhà xây dựng mã boilerplate?
struct Base {
Base() { ... }
Base(int) { ... }
Base(int,string) { ... }
...
};
Tôi muốn kế thừa nhiều lớp từ Base
, vì vậy tôi viết
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) { }
};
và tôi không cần phải thêm bất kỳ mã đơn vị thi công của con. Có thể kế thừa chúng ngầm không? Để gọi cho họ theo cùng một cách như trong Base
, chỉ cần thay đổi tên? Preprocessor có thể bị lạm dụng ở đây, nhưng có cách nào khác không?
C++ 11 có các nhà thầu ủy quyền. – 111111
Đề xuất hoang dã: bạn có thể cân nhắc thêm một số đối số mặc định được chọn cẩn thận không? 'Con gái (int i = 0, string s =" Hello "): Base (i, s)' sẽ là một hàm tạo duy nhất. –
@ 111111: Tuyệt vời! Bạn có thể vui lòng cho tôi một liên kết hoặc ví dụ? –