ฉันต้องการมีหลายประเภทที่แชร์การใช้งานเดียวกัน แต่ยังคงเป็นประเภทที่แตกต่างกันใน C ++
เพื่ออธิบายคำถามของฉันด้วยตัวอย่างง่ายๆฉันต้องการมีคลาสสำหรับแอปเปิ้ลส้มและกล้วยซึ่งทั้งหมดมีการดำเนินการเหมือนกันและการนำไปใช้งานเหมือนกัน ฉันต้องการให้พวกเขามีประเภทต่างๆเพราะฉันต้องการหลีกเลี่ยงข้อผิดพลาดเนื่องจากความปลอดภัยของประเภท
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 ...
เพื่อไม่ให้รหัสซ้ำดูเหมือนว่าฉันสามารถใช้ผลไม้คลาสพื้นฐานและสืบทอดจากมันได้:
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 {};
แต่แล้วคอนสตรัคเตอร์ไม่ได้รับการสืบทอดและฉันต้องเขียนมันใหม่
มีกลไกใดบ้าง (typedefs, template, inheritance ...