Archief - [PROG][C++] vector van pointers

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Banemus

Legacy Member
class Gun{
void Gun::Shoot(){
cout >> "BANG\n" ;
}
};

main(){
vector<Gun*> vGuns;
vGuns.push_back(new Gun());
vGuns.push_back(new Gun());
for (vector::iterator it = vGuns.begin(); it!=vGuns.end(); ++it; ){
//Hoe kan ik hier nu met de variabele it de Shoot methode activeren?
*it->Shoot(); werkt blijkbaar niet
it->Shoot(); ook niet

}

}

forloRn_

Legacy Member
Yep. *it is het element waar je iterator naar wijst, en dat is een Gun*.

Nog een aantal opmerkingen: je mag (moet?) Gun:: weglaten voor member functions, Gun::Shoot() is private, dus die kan je sowieso niet aanroepen met (*it)->Shoot() en >> moet << zijn. Bovendien zal je zonder using std::vector<Gun *> moeten gebruiken, en vector::iterator moet std::vector<Gun *>::iterator zijn. Maar ik veronderstel dat dat gewoon komt omdat je dat hier vlug hebt neergepend. :)

Banemus

Legacy Member
forloRn_ zei:
Maar ik veronderstel dat dat gewoon komt omdat je dat hier vlug hebt neergepend. :)


zoiets ja :) had geen zin om heel mijn code hier te zetten want dan zou je er weinig van begrepen hebben maar het moet dus gewoon
(*it)->Shoot();
zijn? Met de haakjes.

killgore

Legacy Member
eh, enige reden hiervoor is dat de operator -> voorrang heeft op de dereferentieoperator *, wat je oplost met behulp van de machtige haakjes :p.

Had het omgekeerd geweest dan waren ze niet nodig.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan