It's a hint to make bullet inherit from a class with direction and position [...]
Don't confuse OOD with inheritance. Many books overemphasize inheritance because it was a new feature with OOP. That has embed the idea that in general good OOD requires inheritance everywhere. Well, in fact good teaching should show you that composition should be preferred. That does not mean that inheritance is devilish. Instead it means that one simply should think twice whether inheritance is the tool to use.
However, I still hint at the fact that the OP don't want to model a bullet itself here. Think of the several roles. A Bullet class typically means a specialized item, i.e. a game object where an agent can interact with. E.g. something that can be picked up, and inserted into a magazine as ammunition. As an item the bullet has a position and orientation, for sure. If it lies on the ground it is just placed in the world. If it is hold in the hand its placement is updated by forward kinematics. When being shot, the bullet looses its role as item and becomes a damage causer instead. Although, as a real world object, the bullet is still the same, the change of its role makes many of its features as an item meaningless but makes other features become relevant. One of these features is the kind of collision detection (changing from bounding box to trajectory); also the collision response of a bullet thrown by hand is different from a shot bullet; the latter causes damage, the former not. A bullet thrown by hand follows a ballistic curve while shooting a bullet gives a straight trajectory (for the sake of a simple shooting game). And so on ...
Wrangling all this into one class is not the way to go. Hence, modeling the shot is what is wanted here. It defines how the placement is to be updated (if used so at all), how to run collision detection, and how to handle a collision response. Classifying shots as themselves gives the engine the possibility to handle them explicitly. Naming such a class "Bullet" would simply be misleading.