@@ -701,28 +701,10 @@ GameInfoset GameTreeRep::InsertMove(GameNode p_node, GameInfoset p_infoset)
701701// GameTreeRep: Lifecycle
702702// ------------------------------------------------------------------------
703703
704- GameTreeRep::GameTreeRep () = default ;
705-
706- void GameTreeRep::Initialize ()
707- {
708- auto self = shared_from_this ();
709-
710- // Now construct children using the VALID GameTreeRep*
711- m_root = std::make_shared<GameNodeRep>(self.get (), nullptr );
712- m_chance = std::make_shared<GamePlayerRep>(self.get (), 0 );
713-
714- // If GameNodeRep creates children of its own, same pattern applies
715- }
716-
717- std::shared_ptr<GameTreeRep> GameTreeRep::Create ()
704+ GameTreeRep::GameTreeRep ()
705+ : m_root(std::make_shared<GameNodeRep>(this , nullptr )),
706+ m_chance (std::make_shared<GamePlayerRep>(this , 0 ))
718707{
719- // Construct object under shared_ptr CONTROL BLOCK
720- auto rep = std::shared_ptr<GameTreeRep>(new GameTreeRep ());
721-
722- // Now safe to construct children because shared_from_this works
723- rep->Initialize ();
724-
725- return rep;
726708}
727709
728710GameTreeRep::~GameTreeRep ()
@@ -739,7 +721,7 @@ Game GameTreeRep::Copy() const
739721 return ReadGame (is);
740722}
741723
742- Game NewTree () { return GameTreeRep::Create (); }
724+ Game NewTree () { return std::make_shared<GameTreeRep> (); }
743725
744726// ------------------------------------------------------------------------
745727// GameTreeRep: General data access
0 commit comments