How to create a user menu structure

carguy:
Any thoughts on that approach?

const uint16_t*  first_displayed_value_icon;

the icon is stored how?

const char* firstValue;

Depending on how your data is structured, using a string for the values can be easier to work with and you may be able to overload a displayfunction depending on wether that particular spot on the display is a reference to a float or to an int

footnote:

typedef struct

this is C++; you don't need the typedef keyword, enums structs and unions are automatically types.