Скажем, у меня есть 2 классов:Как использовать полиморфизм с помощью std :: function?
class A {}
class B : public A {}
И я хочу использовать std::function
получает что-нибудь типа , но с правопреемником к нему методов, которые получают классы, которые наследуют от (как B).
void myFun(B bbbb) {}
std::function<void(A)> blah = std::bind(myFun, _1);
Это, очевидно, не работает, потому что компилятор не будет просто неактуально опущен.
Но как я могу сделать что-то подобное? В основном я хочу провести карту некоторого базового типа std :: function, и в каждом отображаемом значении он будет содержать std::function
для производного типа, такого как B.
Есть ли способ привязать оператора литья к заполнителю?
Поскольку не все 'A' гарантированы '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' – Dave
@Dave Это правда, но допустим, что отображение корректно, и оно всегда будет иметь нужный тип. –
Если это так, почему бы вам просто не сделать 'std :: function' взять тип' B'? Если это сложнее, возможно, вы должны его создать? – Dave