Witam mam taki kod
class Level;
class PlayState : public GameState, public std::enable_shared_from_this<PlayState>
{
private:
sf::View viewe;
std::shared_ptr<sf::Event> event;
std::unique_ptr<Level> currentLevel;
std::vector<std::unique_ptr<Level>> level;
std::unique_ptr<Player> player;
public:
~PlayState();
void draw();
void update(const float dt);
void input();
PlayState(std::shared_ptr<Game> game);
std::shared_ptr<PlayState> getShPrt();
};
PlayState::PlayState(std::shared_ptr<Game> game)
{
event = std::make_shared<sf::Event>();
this->game = game;
player=std::unique_ptr<Player>(new Player(100,100, Layers::CREATURES, event));
currentLevel = std::unique_ptr<Level>(new TestLevel_01(getShPrt(),"abc", event, game->window, std::move(player)));
//std::cout << "Create PlayState - " << getShPrt() << std::endl;;
}
std::shared_ptr<PlayState> PlayState::getShPrt()
{
return shared_from_this();
}
Potrzebuję do Obiektu Level -> TestLevel_01
podać shared_ptr
który powstaje z za pomocą enable_shared_from_this
i shared_from_this()
niestety dostaję:
Unhandled exception at 0x00007FFDEEC4F218 in TestGame.exe: Microsoft C++ exception: std::bad_weak_ptr at memory location 0x00000044484FE6D8.
robię to tak jak jest w dokumentacji ale niestety nie działa
Chcę to zrobić aby nie używać raw pointerów.