C++ Я пытаюсь использовать вставки функции вектора, но я получаю ошибку компиляции, говоря:Ошибка компиляции: «нет функции согласования для вызова„станд :: вектор <Card*> :: вставки (междунар, Card * &)“»
src/Hand.cpp: 71: 78: ошибка: нет подходящей функции для вызова в 'std :: vector :: insert (int, card &)' Vvalues [место] -> getVcards(). Insert (Vvalues [ место] -> getSize() - 1, * card);
Я понимаю, что типы элементов, которые я отправляю вставить, не соответствуют вставке, но я не могу понять, почему.
это моя функция:
bool Hand::addCard(Card* card)
{
int place = Hand::searchCard(card); // the case that there is values in Vvalues but no one of them contain &card value
if (place <0)
{
Value* v = new Value(card);
if (place == -1 || place == -2) Vvalues.insert(Vvalues.begin(),v);
else if (place == -3) Vvalues.insert(Vvalues.end(),v);
else if (place == -4) insertValueSortedWay(v);
}
else
{
Vvalues[place]->getVcards().insert(Vvalues[place]->getSize()-1, *card);
}
return true;
}
и чем я пытаюсь скомпилировать, и я получаю это:
src/Hand.cpp:71:78: error: no matching function for call to ‘std::vector<Card*>::insert(int, Card&)’
Vvalues[place]->getVcards().insert(Vvalues[place]->getSize()-1, *card);
В чем проблема и как это исправить?
'Vvalues [место] -> getSize() - 1' не дает вам действительного итератора для' Vvalues'. Похоже, вы предпочитаете 'Vvalues.end()' там. –
'insert' принимает итератор, а не индекс. – molbdnilo
Возможно, вы захотите использовать 'std :: vector :: push_back()', а не 'insert'. –