Здравствуйте, rFLY, Вы писали:
FLY>Здравствуйте, ·, Вы писали:
FLY>·>Это осложняет жизнь разработчикам библиотек и пользователям. Допустим, есть CoolLib v1.0 с таким методом void AddItem(SimpleItem item). Уже становится невозможно просто добавить void AddItem(SpecialItem item) в CoolLib v1.1 не сломав совместимость.
FLY>·>Т.е. overloading стал неюзабельным.
FLY>А как компилятор это пропускает или в AddItem принимает object без конкретного типа?
Я не понял вопрос. Повторюсь:
CoolLib v1.0:
void AddItem(SimpleItem item) {doStuff();}
В юзерском коде в 100500 местах:
AddItem(new("foo", 123, false));
CoolLib v1.1:
void AddItem(SimpleItem item) {doStuff();}
void AddItem(SpecialItem item) {doSpecialStuff();}
весь юзерский код при апдейте v1.0 -> v1.1 перестаёт компиляться с ambiguity.