Как я могу сгруппировать общий код в двух классах, которые имеют точно одинаковые определения, но тип переменной одного C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу сгруппировать общий код в двух классах, которые имеют точно одинаковые определения, но тип переменной одного

Сообщение Anonymous »

У меня есть два класса: motor_distance и motor_displacement , которые оба содержат идентичный код, однако тип счета переменных элементов и тип возврата коннутризирования доклада является единственной разницей. положительный. Таким образом, он не подписывается, поэтому я могу сохранить более высокие положительные значения count
Вот код:

Код: Выделить всё

constexpr double pi = 3.14159;

class Motor_Distance{
private:
unsigned long count;
float wheel_diameter;
unsigned int pulses_per_revolution;

public:
unsigned long convToCount(){ return count; }

float convToMeters(){
return  convToCount() * pi * wheel_diameter / pulses_per_revolution;
}
};

class Motor_Displacement{
long count;
float wheel_diameter;
unsigned int pulses_per_revolution;
public:

long convToCount(){ return count; }

float convToMeters(){
return  convToCount() * pi * wheel_diameter / pulses_per_revolution;
}
};

int main(){
}
< /code>
Поскольку оба класса содержат повторный код, и я хочу удалить этот повторный код. Я мог бы достичь этого, используя базовый класс шаблона следующим образом: < /p>
constexpr double pi = 3.14159;

template
class Motor_Travel{
Travel_Type count;
float wheel_diameter;
unsigned int pulses_per_revolution;
public:

Travel_Type convToCount(){ return count; }

float convToMeters(){
return  convToCount() * pi * wheel_diameter / pulses_per_revolution;
}
};

class Motor_Distance : public Motor_Travel{};
class Motor_Displacement : public Motor_Travel{};

int main(){
}
i там, как я могу сделать аналогичную вещь (группа/удалить повторный код) без использования шаблонов?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -same-defi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»