diff --git a/src/newgrf_class.h b/src/newgrf_class.h index 95c589d17a..a7b8099add 100644 --- a/src/newgrf_class.h +++ b/src/newgrf_class.h @@ -19,18 +19,25 @@ */ template struct NewGRFClass { - uint32 global_id; ///< Global ID for class, e.g. 'DFLT', 'WAYP', etc. - StringID name; ///< Name of this class. - uint count; ///< Number of stations in this class. - Tspec **spec; ///< Array of station specifications. - - /** The actual classes. */ +private: + uint count; ///< Number of specs in this class. + Tspec **spec; ///< Array of specifications. + + /** + * The actual classes. + * @note We store pointers to membes of this array in various places outside this class (e.g. to 'name' for GRF string resolving). + * Thus this must be a static array, and cannot be a self-resizing SmallVector or similar. + */ static NewGRFClass classes[Tmax]; - static void Reset(); /** Initialise the defaults. */ static void InsertDefaults(); +public: + uint32 global_id; ///< Global ID for class, e.g. 'DFLT', 'WAYP', etc. + StringID name; ///< Name of this class. + + static void Reset(); static Tid Allocate(uint32 global_id); static void Assign(Tspec *spec); static NewGRFClass *Get(Tid cls_id);