Я пытаюсь стереть элемент вектора на C ++ с помощью метода erase
следующим образом:
player_animals.erase(second_parameter);
Обратите внимание, что second_parameter
является целым числом e.g. 2
и player_animals
- это вектор указателей Animal, определенных следующим образом: vector<Farm::Animal *>
animals _;
, а ошибка, которую я получаю при стирании:
no instance of overloaded function "std::__1::vector<_Tp, _Allocator>::erase [with
_Tp=Farm::Animal *, _Allocator=std::__1::allocator<Farm::Animal *>]" matches the argument
list -- argument types are: (unsigned int) -- object type is: std::__1::vector<Farm::Animal
*, std::__1::allocator<Farm::Animal *>>
Код, в котором я использую метод стирания выглядит следующим образом:
if (animal_to_be_sold->getType() == SellCommand::SELL_FARM_ANIMAL)
{
Farm::FarmAnimal* animal_to_be_sold = static_cast<FarmAnimal*> (animal_to_be_sold);
player.putAnimalInSold(animal_to_be_sold);
player_animals.erase(second_parameter);
player.addMoney(SellCommand::FARM_ANIMAL_PRICE);
}
else
{
player.addMoney(SellCommand::PET_PRICE);
player_animals.erase(second_parameter);
}
Как я могу это исправить, чтобы я мог использовать метод стирания для удаления элемента в векторе в позиции