Casting smart pointers
We will often want to pack the smart pointers of derived classes into data structures or function parameters of the base class such as all the different derived Component
classes. This is the essence of polymorphism. Smart pointers can achieve this using casting. But what happens when we later need to access the functionality or data of the derived class?
A good example of where this will regularly be necessary is when we deal with components inside our game objects. There will be an abstract Component
class and derived from that there will be GraphicsComponent
, UpdateComponent
, and more besides.
As an example, we will want to call the update
function on all the UpdateComponent
instances each frame of the game loop. But if all the components are stored as base class Component
instances, then it might seem that we can't do this. Casting from the base class to a derived class solves this problem.
The following code casts myComponent
, which is a base...