Перегрузка постфиксных операторов ++ и --
- Войдите на сайт для отправки комментариев
Пнд, 13/11/2017 - 18:28
Эпиграф:
char я[] = {"дятел"};
Хочу создать класс для лимитирования диапазона переменных в процессе инкремента - декремента. В учебниках примерно такое:
class lev {
public:
lev & operator ++()
{
return (*this)++;
}
};
lev level;
Как мне прописать туда само ограничение, предположим от 0 до 100?
Хрень написана
Понятно хрень, знал бы как, не спрашивал. Как правильно?
Щас подскажут. Мне с планшета неудобно.
Типа такой фигни надо?
class Integer { public: int value; void operator ++() { ++value; if(value > 100) value = 0; }; void operator ++(int) { value++; if(value > 100) value = 0; }; void operator --() { --value; if(value < 0) value = 100; }; void operator --(int) { value--; if(value < 0) value = 100; }; }; Integer myInt; void setup() { Serial.begin(9600); myInt.value = 95; } void loop() { ++myInt; Serial.println(myInt.value); delay(1000); }Отдавать я бы стал не void а значение value
Спасибо!!! А как с изменением исжодной переменной? То есть
int i = 50; void setup() { Serial.begin(9600); myInt.value = i; } void loop() { ++myInt; // изменение переменной i Serial.println(myInt.value); delay(1000); }Можно через указатели
class Integer { public: int *value; void operator ++() { ++*value; if(*value > 100) *value = 0; }; void operator ++(int) { *value++; if(*value > 100) *value = 0; }; void operator --() { --*value; if(*value < 0) *value = 100; }; void operator --(int) { *value--; if(*value < 0) *value = 100; }; }; Integer myInt; int i = 95; void setup() { Serial.begin(9600); myInt.value = &i; } void loop() { ++myInt; Serial.println(i); delay(1000); }Похоже Penny конструкторы в классе потерял. Вот и приходится костыль стр 38 ставить.
Похоже Penny конструкторы в классе потерял. Вот и приходится костыль стр 38 ставить.
Да так и есть, это просто для примера было. С телефона лень много набирать.
Про конструктор класса буду читать.
В последнем скетче ++myInt; работает а myInt++; нет.
ПС:https://habrahabr.ru/post/132014/
В последнем скетче ++myInt; работает а myInt++; нет.
Ну, мозги-то и самому надо включать, а не только ждать, что кто-то всё распишет. Скобки поставьте в строка 13 и 25