Как стереть элемент из вектора в C ++ - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь стереть элемент вектора на 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); 

            }

Как я могу это исправить, чтобы я мог использовать метод стирания для удаления элемента в векторе в позиции

1 Ответ

1 голос
/ 07 мая 2020

Думаю, это сработает, потому что функция std :: vector :: erase требует итератора:

player_animals.erase(player_animals.begin() + second_parameter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...