Gibt es eine Möglichkeit, dies (ohne Makros) zu trocknen?DRY up-Code, der nur in const unterscheidet
void clear_tp_vec(vector<const Tk*>& tps){
for(auto it=tps.begin();it!=tps.end();++it){
const ValT* vp=dynamic_cast<const ValT*>(*it);
if(vp!=NULL)
delete vp;
}
tps.clear();
};
void clear_tp_vec(vector<Tk*>& tps){
for(auto it=tps.begin();it!=tps.end();++it){
ValT* vp=dynamic_cast<ValT*>(*it);
if(vp!=NULL)
delete vp;
}
tps.clear();
};
Das einzige, was die zweite Überlast in sich unterscheidet, ist die const Qualifier (das Fehlen davon). Das Auskommentieren einer der beiden Versionen unterbricht meinen Code.
Definieren Sie es als Vorlage. – cup
Die for-Schleife könnte kürzer sein: for (auto it = tps.begin(); it! = Tps.end(); ++ it) löschen dynamic_cast (* it); –
user1764961
Danke. Ich wusste nicht, dass ich nullptrs löschen könnte. – PSkocik