c ++ create shared_ptr zum Stapeln des Objekts
In meiner Methode wird ein Player-Objekt wie folgt erstellt:
Player player(fullName,age);
Mein Lehrer hat uns einen Code mit einem Konstruktor gegeben, der einen shared_ptr zu einem Spielerobjekt führt.
//constructor of the class
SomeClass(const std::shared_ptr<Socket> client, std::shared_ptr<Player> player)
Nehmen wir an, wir möchten den Konstruktor von SomeClass aufrufen und das von uns erstellte Player-Objekt auf dem Stack übergeben.
Ist es jemals sicher / möglich / gut, einen shared_ptr aus einem Stack-Objekt zu erstellen?
Um die Frage verständlicher zu machen, nehmen wir an, wir haben zwei große Code-Projekte und möchten sie zusammenführen, sodass eine Methode aus einem Projekt von einem anderen aufgerufen wird, sollten wir alle Dateien neu schreiben, um ausschließlich shared_ptr oder Stack-Objekte zu verwenden (für die Methoden) das muss verbunden werden) oder sollten wir einfach ein shared_ptr zum Stack-Objekt erstellen.
Warum bin ich mir des Ergebnisses nicht sicher:
Was passiert, wenn der Bereich, in dem das Stack-Objekt erstellt wurde, endet, der shared_ptr jedoch weiterhin verwendet wird und umgekehrt?
Das Stack-Objekt wird gelöscht, wenn es außerhalb des Gültigkeitsbereichs liegt, oder bleibt es am Leben, weil es noch einen Verweis auf das Objekt gibt (obwohl in einer anderen Klasse)?
Der shared_ptr verlässt den Gültigkeitsbereich und versucht, das Objekt zu löschen. Kann er das, obwohl das Stack-Objekt darauf verweist?
Hinweis: Ich weiß, ich könnte einfach Folgendes verwenden und Spieler übergeben
shared_ptr<Player> player{ new Player {fullName,age} };