Re[3]: Динамический полиморфизм приперегрузке функций
От: Аноним  
Дата: 16.07.07 13:32
Оценка:
_>Извините, но вы не правы. Это называется ковариантными типами возращаемых значений. С++ это поддерживает. В этом месте проблеммы нет.
_>(Компилятор ворнинга не выдает )

Да, в самом деле, getSelf для потомков перегружают Base::getSelf. Не знал про такую фичу
Но все равно, вы хотите, чтобы компилятор сделал выброр между функциями Tester::Test(Derived1*) и Tester::Test(Derived2*) на основании типа, который вернет функция getSelf, а этот тип будет известен только во время выполнения. В данном случае, видимо, значение, возвращаемое pBase1->getSelf(), неявно статически приводится к Base*, а потом компилятор не может привести Base* к Derived1* или Derived2*, поэтому и сообщает об ошибке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.