Перегрузка операторов unsigned int

134
03 апреля 2019, 13:30

Почему перегруженный оператор не может принимать unsigned int?

Пример:

exampleClass& operator++(exampleClass& ex,unsigned int intt)
    {
    }

ошибка:

error: postfix ‘exampleClass& operator++(exampleClass&, unsigned int)’ must have ‘int’ as its second argument
  friend exampleClass& operator++(exampleClass& ex,unsigned int intt);
Answer 1

++ - либо унарный, либо постфиксный оператор. В любом случае он может принимать только один-единственный аргумент. И это ваш exampleClass. Больше у него нет никаких аргументов.

Опциональный т. наз. "второй" параметр в объявлении функции operator ++ - фиктивный. Это "костыль", предназначенный для отличения постфиксного ++ от префиксного ++ при объявлении. Этот фиктивный второй параметр должен иметь тип int. Так требуют правила языка С++. Какой тип имеет этот второй "параметр" для вас значения иметь не должно, ибо фактически принимать вы его скорее всего никогда не будете.

Обратите также внимание на то, что объявление operator ++ с дополнительным фиктивным параметром (типа int) перегружает именно постфиксный оператор ++ для вашего класса. Традиционно, постфиксный оператор ++ должен возвращать "старое", исходное значение своего операнда (значение до инкремента). Для выполнения этого требования обычно приходится возвращать результат такого ++ по значению, а не по ссылке. Что вы собрались делать внутри своего ++ и как вы планируете возвращать результат по ссылке - не ясно. Закрадывается подозрение, что на самом деле вы пытаетесь реализовать функциональность оператора +=, но зачем-то вцепились в ++.

READ ALSO
Предварительно объявление структуры

Предварительно объявление структуры

Есть две структуры, реализующие геометрические понятия точки и вектораДля инициализации вектора требуется две точки

210
Можно ли сравнивать float с нулем?

Можно ли сравнивать float с нулем?

Все мы знаем, что к float нельзя (точнее не рекомендуется) применять операцию ==Почему - думаю сами знаете

141
OpenProcess не возвращает хэндл процесса

OpenProcess не возвращает хэндл процесса

OpenProcess не возвращает хэндл процесса, при этом hwnd и procID не равен NULL

142
Задача “Игра” C++

Задача “Игра” C++

Условие задачи на картинкеКод что я написал ниже: Почему-то всегда если ввожу большое число(около 1 * 10^10) выдает результат 17:174

129