Я хочу проверить, с каким объектом я имею дело, потому что я хочу заменить их, поэтому я произвел приведение.
void Promote(vector<shared_ptr<Employee>>& sourceEmployee) {
auto it = std::find_if(sourceEmployee.begin(), sourceEmployee.end(),
[&sourceEmployee, id](const auto &obj) { return obj->getID() == id; });
if (it != sourceEmployee.end()) {
// I want to return true whether I'm dealing with "Intern" class object
if (auto w = dynamic_cast<std::shared_ptr<Intern>>(it->get())) { // ERROR
auto tmp0 = std::move(*it);
*it = std::make_shared<Worker>(*tmp0);
}
Я получаю ошибку (цель не указатель или ссылка) в этой строке:
if (auto w = dynamic_cast<std::shared_ptr<Intern>>(it->get()))
РЕДАКТИРОВАТЬ: я тупой.Просто используйте auto w = dynamic_cast<Intern*>(it->get())