В Motor_Displacement count имеет длинное значение, поскольку оно может быть как отрицательным, так и положительным.
В Motor_Distance, 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(){
}
Код: Выделить всё
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(){
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -same-defi
Мобильная версия