c++ - What does "(GameState *) new PlayingState()" do? -
the line
(gamestate *) new playingstate()
does not make sense me. since gamestate*
pointer class , new
operator employed shows playingstate()
object "newed" class. questions come @ end of post first definition of respective classes:
class gamestate { public: virtual void onstart(statebasedgame &game) = 0; }; class playingstate : public gamestate, public eventsubscriber<sf::event> { public: playingstate(); void onstart(statebasedgame &game); };
my questions:
1.is casting between classes? can cast classes in c++ casting data types in c? thought c++ more "formal" , "redundant"?
2.why want that? what's point of such conversion, can author achieve? i'm guessing has constructor.
3.to new
something, shouldn't go format?:
<class_type> <new_class_name> = new <class_type_name>
as in
gamestate gamestate = new playerstate;
apparently that's not way?
without further context, odd least (and fail imagine context make sense).
first, right, in c++ style code use static_cast
or dynamic_cast
, depending on situation, cast between classes.
second, since playingstate
inherits gamestate
, pointers playingstate
(as returned new playingstate()
) implicitly convertible gamestate*
. cast not needed @ all.
in situation, auther have used:
gamestate *gs = new playingstate();
or better, modern c++:
auto gs = std::make_unique<playingstate>()
(see std::unique_ptr
, std::make_unique
, auto
)
Comments
Post a Comment