Мне нужно создать тип данных Percent, который бы хранил в себе только целые числа от 0 до 100, и чтобы логика была такая:
Percent a;
a = 101; // В a бы клалось не 101, а 100.
a = -5; // В a клалось бы не -5, а 0.
И так далее. Как это можно реализовать?
На C++ давно не писал, но видимо вам нужно что-то типа:
class Percent {
uint8_t value;
public:
const static int MAX_VALUE = 100;
const static int MIN_VALUE = 0;
Percent(int v) {
if (v > MAX_VALUE) {
this->value = MAX_VALUE;
} else if (v < MIN_VALUE) {
this->value = MIN_VALUE;
} else {
this->value = v;
}
}
operator int() const { return this->value; }
};
Percent p = 128;
std::cout << p << std::endl;
// Output:
// 100
p = -5;
std::cout << p << std::endl;
// Output:
// 0
Небольшой пример:
class Procent {
public:
...
Procent& operator =(int v) {
_v = v >= 100? 100: (v < 0? 0: v);
return *this;
}
...
private:
int _v;
}
Остальное аналогично
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости