#cpp
Мне нужно создать тип данных Percent, который бы хранил в себе только целые числа от 0 до 100, и чтобы логика была такая: Percent a; a = 101; // В a бы клалось не 101, а 100. a = -5; // В a клалось бы не -5, а 0. И так далее. Как это можно реализовать?
Ответы
Ответ 1
На 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Ответ 2
Небольшой пример: class Procent { public: ... Procent& operator =(int v) { _v = v >= 100? 100: (v < 0? 0: v); return *this; } ... private: int _v; } Остальное аналогично
Комментариев нет:
Отправить комментарий