одной для каждого из наследников класса Base. Например:
class Base {}
class Foo : public Base {}
class Bar : public Base {}
void gen(Foo *foo) {}
void gen(Bar *bar) {}
И если я вызываю gen в рантайме с аргументом типа Base*, то компилятор возмущается:
note: candidate function not viable: cannot convert from base class pointer 'AST::Expression::Base *' to derived class pointer 'AST::Expression::Number *' for 1st argument
Как решать?
Я привык, что высокоуровневые языки нормально решают проблему полиморфизма?
через каст. Прозрачно приводятся наследники к базе, а не наоборот
Решать очень просто. Читать про наследование и осознавать
А какую перегрузку ты ожидаешь, чтобы он вызвал? Или хочешь, чтобы он привел к конкретному указателю на дочерний класс? И в каких языках ты такое поведение видел?
Обсуждают сегодня