Het programma geeft me deze fout en ik weet niet zeker wat ik fout heb gedaan. Scheepsobjecten worden toegevoegd aan vloot via een methode die Add_ship wordt genoemd, dat een aanwijzer naar een schip neemt.
No matching member function for call 'push_back'
Antwoord 1, Autoriteit 100%
//Add_ship method bool
fleet::add_ship(ship const & s)
{
ships.push_back(&s); (No matching member function for call to 'push_back')
return true;
}
De fout is vanwege de verklaring:
std::vector<ship*> ships;
De vector bevat aanwijzingen op mutable schepen, maar de code passeert een aanwijzer naar een const-verzending naar push_back
. Je hoeft ook constanten op te slaan in de vector:
std::vector<const ship*> ships;
of geef een niet-const-aanwijzer aan op de push_back:
fleet::add_ship(ship & s)
{
ships.push_back(&s); (No matching member function for call to 'push_back')
return true;
}
Side-opmerking: Verplaats de bovenstaande functie naar een CPP, verplaats het naar het lichaam van de klas, of declareer / definieer het als inline, als u linkerfouten niet wilt ontvangen.