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} };

Antworten auf die Frage(10)

Ihre Antwort auf die Frage