dynamic_cast для объекта shared_ptr - PullRequest
0 голосов
/ 25 июня 2018

Я хочу проверить, с каким объектом я имею дело, потому что я хочу заменить их, поэтому я произвел приведение.

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())

...