Eine leicht perverse Methode wäre
vorm Aufruf den String in einen (non const) C-String zu kopieren
z.B so
char *newCstr;
newstr = new char[TheString.size());
strncpy(newCStr, TheString.c_str(), TheString.size())+1);
aufruf(newCStr);
delete[] newCStr;
Der Vorteil von string ist, daß es schon einen compare operator definiert hat, den KEY braucht.
Bei char* ist das klarerweise nicht der Fall.
Auch das sollte kein Problem sein.
Völlig ungetester(!) Code
class CStrKeyCompare
{
public:
bool operator()(char* input1, char* input2) const
{
return strcmp(input1, input2) < 0;
}
};
Definition der map mit dem neuen comp operator für char*
map<char*, Objekt, CStrKeyCompare> whatever;
Mein Code hat möglicherweise ein paar Fehler, aber im PRINZIP sollte es so oder so ähnlich gehen.
(Sollte nur das Prinzip zeigen)
Zitat
als c++ und stl neuling hat man ein schweres leben.
Jo
[EDiT]
Kritischer Punkt bei den eigenen Vergleichsoperatoren für KEY ist, daß es Strict Weak Ordering implementieren muß.
Ansonsten gibt das böse bugs.
[/EDIT]
Mfg, LB