Скажем, у меня есть класс с целым числом, которое должно быть всегда положительным с простым C'tor:
class A {
unsigned int x;
public:
A(unsigned int X) : x(X) {}
};
И скажем, кто-то случайно создает объект A со значением -5
.
Конечно, это недопустимо, и X
получит действительно огромное значение, так как MSB теперь не обозначает знак числа.
Проблема в том, что теперь я не могу проверить, является ли число отрицательным или недействительным (может быть, поразрядным?).
Должен ли я просто избегать unsigned
и просто использовать простой int
? Поступая таким образом, я мог бы просто выбросить исключение, если заданное значение превышает максимальное значение или ниже нуля.
Хотелось бы услышать некоторые предложения.