Casting von string nach void* und wieder zurück

möglich ist, zu re-map der STL-Klasse-Objekt von void* ?

#include <string>

void func(void *d)
{
    std::string &s = reinterpret_cast<std::string&>(d);
}

int main()
{
    std::string s = "Hi";
    func(reinterpret_cast<void*>(&s));
}
Funktioniert dein code funktioniert?
Warum wollen Sie dies tun? Welchen möglichen Grund Sie haben zu wollen reinterpret_cast zu void*? (Für was es Wert ist, die Umwandlung void* implizit ist und kein cast notwendig ist. Beim Gießen zurück static_cast ist ausreichend.)
Viele falsche code angezeigt wird, um zu "arbeiten". Sie sollte test-code für compiler und andere Fehler, aber kein Fehler bedeutet nicht, kein problem.
Im eigentlichen code string s ist temporär, die zerstört wird, sobald es übergeben wird durch die func. Ich war auf der Suche nach binden einen Verweis auf die temporäre variable, die übergeben wird, durch eine void*.
Sie sind Missverständnis mindestens zwei Dinge: 1) Provisorien erstellt bei Aufruf der Funktion werden nicht zerstört, bis nach kehrt die Funktion zurück, und 2) Sie können nur verlängern die Lebensdauer eines vorübergehenden durch binden an eine Referenz sofort, wenn es erstellt wird, nicht, indem Sie es um und später Bindung.

InformationsquelleAutor user963241 | 2011-01-26

Schreibe einen Kommentar