Ich habe ein Problem mit dem Stapel geteilten Zeigern.C++ - wie man Objekte zu std :: std stack :: shared_ptr?
GameState.hpp:
class GameState : std::enable_shared_from_this<GameState>
{
public:
virtual void update(float delta) = 0;
virtual void render() = 0;
virtual void handleInput() = 0;
protected:
Game* mGame;
StatesManager.hpp:
class StatesManager
{
public:
StatesManager();
~StatesManager();
void pushState(std::shared_ptr<GameState> state);
void changeState(std::shared_ptr<GameState> state);
void popState();
std::shared_ptr<GameState> peekState();
private:
std::stack<std::shared_ptr<GameState> > mStates;
};
Hier ist, wie ich zu schieben bin versucht:
statesManager.pushState(new StateSplash(this));
Aber das ist, gibt mir diese Fehlermeldung:
no suitable constructor exists to convert from "StateSplash *" to "std::shared_ptr<GameState>"
Was ist die richtige Methode, um ein Objekt auf std :: std :: shared_ptrs zu schieben? Ich möchte sie verwenden, weil es "Garbage Collector" zur Verfügung stellt, die ich brauche, denn wenn ich Element vom Stapel knalle, wenn Objekt C-like Zeiger ist, ruft es Destruktor nicht auf.
'statesManager.pushState (std :: shared_ptr (neu StateSplash (this))) zu konstruieren;' –
@IgorTandetnik Sie sollten eine Antwort posten und erklären, warum * explizit * ly;), anstatt einen Kommentar. – vsoftco