Hallo Rachus,
habe mir jetzt nicht alle Beiträge durchgelesen aber im Grunde denke ich "spontan" an drei Punkte (oder auch mehr)
1. Ein großer Vorteil von C++ ist die starke Typisierung und die Überprüfbarkeit
von Typen während der Kompilierung und teilweise auch zur Laufzeit. Zeiger brechen dieses
Verhalten/Mechanismus. Manchmal ist das vielleicht erwünscht, aber dann setzt
man voraus, dass der Programmierer weiss was er da macht. Die Stärke von C++
ist, dass man so ziemlich alles machen kann. Der Nachteil von C++ ist, dass man
so ziemlich alles machen kann. Unterm Strich kann man sagen "Vermeide Zeiger
oder Umwandlungen auf selbige, weil es unweigerlich zu Fehler führt".
2. "data.find(&key)" => Finde die Adresse von key. Ich halte es für unwahrscheinlich,
dass genau diese Adresse in data gespeichert wurde, und selbst wenn, dann frage
ich mich warum und wie die da überhaupt reingeraten ist oder was genau dort abgelegt wurde.
3. "data.find(const_cast<Key*>(&key))" => siehe 1.
Gruß micha