У меня есть несколько типов, которые имеют общее поведение и с теми же конструкторами и операторами.Некоторые выглядят так:
class NumberOfFingers
{
public:
void operator=(int t) { this->value = t; }
operator int() const { return this->value; }
private:
int value;
};
NumberOfToes
идентично.
У каждого класса свое поведение, вот пример:
std::ostream& operator<<(std::ostream &s, const NumberOfFingers &fingers)
{
s << fingers << " fingers\n";
}
std::ostream& operator<<(std::ostream &s, const NumberOfFingers &toes)
{
s << toes << " toes\n";
}
Как я могу свернутьдублирование в определениях классов при сохранении различных типов классов?Я не хочу, чтобы NumberOfFingers
и NumberOfToes
были производными от общего базового класса, потому что я теряю конструктор и операторы.Я предполагаю, что хороший ответ будет включать шаблоны.