Ich versuche, Insert-Funktion von Vektor zu verwenden, aber ich erhalte einen Kompilierungsfehler sagen:Compilation Fehler: "keine passende Funktion für Aufruf von 'std :: vector <Card*> :: insert (int, Card * &)'" C++
src/Hand.cpp: 71: 78: Fehler: keine passende Funktion für den Aufruf von 'std :: vector :: insert (int, Karte ) Vvalues [Ort] -> getVcards(). Insert (Vvalues [ Ort] -> getSize() - 1, * Karte);
Ich verstehe, dass die Typen der Elemente, die ich zum Einfügen sende, nicht mit der Signatur des Einsatzes übereinstimmen, aber ich kann nicht herausfinden, warum.
dies ist meine Funktion:
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;
}
und als ich versuche, zu kompilieren und zu bekomme ich diese:
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);
Was ist das Problem und wie kann ich es beheben?
'Vvalues [Ort] -> getSize() - 1' gibt Ihnen keinen gültigen Iterator für' Vvalues'. Sieht so aus, als ob du lieber 'Vvalues.end()' da haben willst. –
'Einfügen' nimmt einen Iterator, keinen Index. – molbdnilo
Wahrscheinlich möchten Sie 'std :: vector :: push_back()' und nicht 'insert' verwenden. –