2016-12-03 1 views
-2

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?

+0

'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. –

+0

'Einfügen' nimmt einen Iterator, keinen Index. – molbdnilo

+0

Wahrscheinlich möchten Sie 'std :: vector :: push_back()' und nicht 'insert' verwenden. –

Antwort

0

std :: insert akzeptiert int nicht als Parameter.

Ihre getSize() Funktion gibt einen int zurück und nimmt stattdessen einen Iterator.

Hier sind die gültigen Parameter für die Vektor :: in c einzufügen ++ 11

insert (const_iterator position, const value_type& val);

insert (const_iterator position, size_type n, const value_type& val);

insert (const_iterator position, InputIterator first, InputIterator last);

insert (const_iterator position, value_type&& val);

insert (const_iterator position, initializer_list<value_type> il);

Verwandte Themen