[] Operator mit string überladen?
-
hallo,
ist es möglich, den [] Operator mit einem string zu überlagern ?
mit dem folgenden Codestück funktioniert es nicht ("invalid types ‘Dictionary<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >*[const char [6]]’ for array subscript")
template<typename T> T Dictionary<T>::operator[](std::string){ return get_value(key); }Mach ich etwas falsch, aber ich fürchte string ist einfach nicht möglich?
mfg
-
String ist möglich.
Ich sehe in deinem Codestück allerdings auch keinen Fehler, aber der Fehlermeldung zufolge, kann es sein, dass du den [] Operator auf einen Pointer anwendest, anstatt auf das Objekt?
-
jup, dass ist so !
kann man [] nur auf Objekte anwenden?
-
es gibt auch einen operator [] für zeiger, nur den kannst du nicht überladen.
T* x; x[10] = T(); //hat dieselbe bedeutung wie *(x + 10) = T(); //und ist "nur" die kurzform
-
Ich vermute mal das du sowas machen willst
A *a; a["aaa"];Das wird nicht funkionieren, da der []-Operator hier Zeigerarithmetik macht, was man nicht ueberladen kann. Vielleicht willst du aber sowas.
A *a; (*a)["aaa"];
-
Zeig doch bitte mal, wie du den Operator aufrufst.
Ist es eigentlich Absicht, dass der Parameter keinen Namen hat (wenn ja, was ist
key)? Und Klassen wiestd::stringsolltest du besser als Const-Referenz übergeben.