Erstellen Sie eine Klasse indexer operator[] erlaubt string-parameter (string, index)

Ich möchte erstellen Sie eine Klasse in c++. Diese Klasse muss die Verwaltung mit einer Sammlung.
OK, kein problem, ich möchte mit operator [], aber natürlich, in diesem Fall, mein Wunsch ist es, den index nicht durch position, sondern durch name ==> das bedeutet, dass mit einem string-indexer.

Es scheint, dass etwas dieser Art ist nicht so nett zu meinem compiler:

//In hpp
class myclass {
   ...
   ...
   std::string operator[](const std::string& name);
}
//In cpp
std::string myclass::operator[](const std::string& name) {
   ...
}
//In main
myclass m;
std::string value = m["Name"];

Compiler sagt mir, dass er nicht lösen kann, das, weil operator[const char[5]] ist nicht vorhanden.
OK OK
Ich könnte diese Abbildung...
Compiler denkt, dass durch aufrufen von m["Name"] ich bin versucht zu rufen, ein operator Aufnahme einen char*, und nicht einen string... ok
Ändern wir den code mit dem operator[] erlaubt einen char* als parameter... nichts.

Kann jemand mir sagen, wie ein solches Ergebnis zu erzielen, das in c++ in einem best practice Weg? Ich nehme an, dass ist ein häufiges problem index string und nicht integer...
Danke.

  • was passiert, wenn Sie versuchen std::string value = m[std::string("Name")];
  • Ich bin mir ziemlich sicher, dass der compiler ist eine Sie
  • std::string hat einen ctor, das dauert ein char*, also, das sollte keine Rolle spielen.
InformationsquelleAutor Andry | 2010-11-27
Schreibe einen Kommentar