Информация об изменениях

Сообщение Re: Оператор приведения от 04.07.2019 10:39

Изменено 04.07.2019 14:06 rg45

Re: Оператор приведения
Здравствуйте, Videoman, Вы писали:

V>Казалось бы, задачу можно решить определив оператор приведения типа у класс Container, но вышеописанные выражения являются вызовами конструкторов инициализации, а следовательно у классов со сложными конструкторами (типа string) сначала срабатывают перегрузки конструкторов, а не операторов приведения типа. Следовательно нужная схема не работает. Как-нибудь просто можно решить задачу в рамках современного С++ ?


Все должно работать, лишь бы только не возникало коллизии между разными пользовательскими преобразованиями. Единственное что, наверное, операторы преобразования стоит объявлять явными (с ключевым слово "explicit"), ну и инициализацю оформлять через скобки, а не через знак присваивания.
Re: Оператор приведения
Здравствуйте, Videoman, Вы писали:

V>Казалось бы, задачу можно решить определив оператор приведения типа у класс Container, но вышеописанные выражения являются вызовами конструкторов инициализации, а следовательно у классов со сложными конструкторами (типа string) сначала срабатывают перегрузки конструкторов, а не операторов приведения типа. Следовательно нужная схема не работает. Как-нибудь просто можно решить задачу в рамках современного С++ ?


Все должно работать, лишь бы только не возникало коллизии между разными пользовательскими преобразованиями. Единственное что, наверное, операторы преобразования стоит объявлять явными (с ключевым слово "explicit"), ну и инициализацю оформлять через скобки, а не через знак присваивания.

Вот: https://ideone.com/xRSCq8