Tôi muốn có một số kiểu chia sẻ cùng một cách triển khai nhưng vẫn thuộc kiểu khác nhau trong C ++.
Để minh họa câu hỏi của tôi bằng một ví dụ đơn giản, tôi muốn có một lớp dành cho Táo, Cam và Chuối, tất cả đều có cùng các thao tác và cách thực hiện giống nhau. Tôi muốn chúng có nhiều kiểu khác nhau vì tôi muốn tránh lỗi nhờ vào an toàn kiểu.
class Apple {
int p;
public:
Apple (int p) : p(p) {}
int price () const {return p;}
}
class Banana {
int p;
public:
Banana (int p) : p(p) {}
int price () const {return p;}
}
class Orange ...
Để không trùng lặp mã, có vẻ như tôi có thể sử dụng Fruit lớp cơ sở và kế thừa từ nó:
class Fruit {
int p;
public:
Fruit (int p) : p(p) {}
int price () const {return p;}
}
class Apple: public Fruit {};
class Banana: public Fruit {};
class Orange: public Fruit {};
Nhưng sau đó, các hàm tạo không được kế thừa và tôi phải viết lại chúng.
Có cơ chế nào (typedefs, mẫu, kế thừa ...) cho phép tôi dễ dàng có cùng một lớp với các kiểu khác nhau không?