Подчеркивая, что функция cpp явная, я получаю сообщение об ошибке - PullRequest
0 голосов
/ 29 апреля 2018

Привет, я написал функцию приведения из myClass в int и наоборот, поэтому я сделал одну из функций явной. При этом я получил ошибку.

Функции:

    CircularInt(int n): CircularInt(1, 12 , n) { }
    explicit operator int() const{ return current;};

Ошибка при:

CircularInt hour {1, 10 , 7 };   // current = 7
int i = hour;

Ошибка:

ошибка: невозможно преобразовать CircularInt в int при инициализации int i = час;

Когда стирается «явное», все хорошо, почему это так?

приписка

Могу ли я упомянуть, что мне не удалось найти такой же вопрос, как я, я нашел много вопросов о людях, которые забыли сделать явные, спрашивая, что является явным (не нашел что-то в этих точных для меня вопросах) и т. Д.

Вероятно, это из-за непонимания полного понимания явного ...

1 Ответ

0 голосов
/ 29 апреля 2018

Когда стирается «явное», все хорошо, почему это так?

Потому что именно это и должно делать explicit: разрешить преобразование, если написано явно , т.е. int i = static_cast<int>(hour);.

...