Ich habe dieses MakroC++ 11 Auto Transformation
#define DO_ALL_BLEND_INFO(iter) for (iter=s_blend_info.begin(); iter!=s_blend_info.end(); ++iter)
Und das ist die Hauptfunktion ..
BLEND_ITEM_INFO* blend_info;
T_BLEND_ITEM_INFO::iterator iter;
DO_ALL_BLEND_INFO (iter)
{
blend_info = *iter;
if (blend_info->item_vnum == item->GetVnum())
{
}
}
Was ich es loswerden dieses Makro und zu verwenden, tun wollen Auto. Aber ich kann nicht verstehen, wie man Auto hier benutzt ... Ich möchte dieses Makro entfernen, aber was, wenn ich Auto in Makro direkt hinzufüge?
Warum const? und warum & ? Ist das nicht genug? \t für (auto blend_info: s_blend_info) –
Goldene Faustregel: Wenn Sie nicht beabsichtigen, etwas zu ändern, deklarieren Sie es explizit als const. Sie helfen dem Compiler, Ihren Code zu optimieren, und verhindern, dass Sie unbeabsichtigte Fehler machen. Und die Verwendung einer Referenz vermeidet eine redundante Kopie. Derselbe Grund, warum erfahrene C++ Programmierer 'void foo schreiben (const std :: vector & param);' anstelle von 'void foo (std :: vector param);' –
Danke für die Erklärung @Sam Varshavchik –