Страницы

Поиск по вопросам

пятница, 20 марта 2020 г.

Свой тип данных с границами в C++

#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; } Остальное аналогично

Комментариев нет:

Отправить комментарий