Тернарный оператор и подклассы в С++

kdv74

Почему неправильна конструкция вида:
 pBase = condition ? pDerived1 : pDerived2;  

?
Компилятор MSVC++ 2005.

klyv

Почему неправильна конструкция вида:
pBase = condition ? pDerived1 : pDerived2;
?
Компилятор MSVC++ 2005.
потому что он не понимает, к чему привести пару pDerived1 или pDerived2, чтобы тип был один. налево он не смотрит.

kdv74

спасибо.
хотя имхо должно быть не трудно отследить при компиляции максимального общего предка

kokoc88

не трудно отследить при компиляции максимального общего предка
Их может быть два, какого тогда выбрать? :)

okis

В стандарте (п. 5.16) вообще пишут, что приоритетным является третий аргумент и к его типу пытаются привести второй

agaaaa

Ну правильно, pDerived1 же не приводится к Derived2.

kdv74

снял все вопросы. Эх, сдалась им эта контесктная независимость..

bleyman

Тогда наверное достаточно написать ...: (CBase)pDerived;
Точнее, по сиплюсплюсному, статик_каст.
Оставить комментарий
Имя или ник:
Комментарий: