У меня вопрос по поводу умных указателей. Можно ли временно привести умный указатель к необработанному указателю? Например:
std::vector<std::unique_ptr<monster>> all_monsters
до std::vector <monster*> all_monsters
;? Я искал всюду по inte rnet, но не могу найти метод
У меня есть std::vector <monster*> all_monsters
, и у меня есть другой вектор с именем std::vector <monster*> monsters
, в котором есть объекты, которые должны быть глубоко скопированы в all_monsters. Поэтому я использую это для l oop, чтобы сделать это
for (unsigned i=0; i < monsters.size(); i++)
{ all_monsters.push_back(new monster(monsters[i]->getMonster(),monsters[i]->getCost(),monsters[i]->getType()));
}
Однако я не хочу вручную удалять объекты, поэтому я хочу использовать уникальный указатель. Вот почему я изменил свой вектор на std::vector<std::unique_ptr<monster>> all_monsters;
и мой для l oop на
for(unsigned i = 0; i < monsters.size(); i++)
{
all_monsters.push_back(std::make_unique<monster>(all_monsters[i]->getName(),all_monsters[i]->getManaCost(),all_monsters[i]->getType()));
}
, но у меня есть функция, которая принимает только std::vector <monster*>
в качестве входных данных (которые не могут быть изменены), поэтому я хочу временно привести общий указатель к необработанному указателю. Я думаю, что слишком сложно?