Ich habe eine Frage bezüglich der Übergabe einer Karte per Referenz. Betrachten wir das folgende Stück Code:
void doNotChangeParams(const map<int, int>& aMap){
if (aMap.find(0) != aMap.end()){
cout << "map[0] = " << aMap[0] << endl;
}
}
und ich habe eine Karte myMap und machen Sie einen Anruf wie diesen: doNotChangeParams(myMap)
Wie man sieht, ändere ich den Parameter nicht aMap innerhalb der Funktion. Dennoch beschwert sich mein G++-Compiler, dass der Zugriff aMap[0] verwirft den Qualifier const .
Ich setze const da ich den Lesern dieser Funktion mitteilen möchte, dass ich das Argument nicht ändere. Außerdem hilft es, Kompilierfehler zu vermeiden, wenn ich die Karte versehentlich ändere.
Derzeit muss ich die const und ich denke, es würde die obige Bedeutung der Signatur der Methode für den Leser unklar machen. Ich weiß, dass ein Kommentar ausreichen würde, aber ich dachte, ich würde einfach fragen, falls Sie irgendwelche "programmatischen" Möglichkeiten kennen.
Danke, Leute.