Context
I am developing a simple CandyCrush lookalike game in C++ to familiarise myself more with Object Oriented Programming and Design Patterns, namely MVC.
The general structure of the Model is as such :

Idea
My idea is to use a packaging logic, such that each GameComponent can be packaged into a primitive type representation.
For example, a RedCandy object would be represented by "R" when packaged.
When needed, the Control will package the model by packaging all the individual GameComponents and returning the results as a matrix of strings. This matrix is then communicated to the View.
The string constants that represent each type of GameComponent are stored in a static class Constants with the following structure :
class Constants {
static const std::string RED;
static const std::string BLUE;
static const std::string GREEN;
static const std::string YELLOW;
static const std::string PURPLE;
static const std::string ORANGE;
static const std::string WALL;
static const std::string BOMB;
static const std::array< std::string, 6 > candies;
public:
static const std::string getRED() {return RED;}
static const std::string getBLUE() {return BLUE;}
static const std::string getGREEN() {return GREEN;}
static const std::string getYELLOW() {return YELLOW;}
static const std::string getPURPLE() {return PURPLE;}
static const std::string getORANGE() {return ORANGE;}
static const std::string randomCandy() {return candies[rand() % 6];}
static const std::string getWALL() {return WALL;}
static const std::string getBOMB() {return BOMB;}
};
Thus, when the view interprets packaged Model, it refers to the Constants class.
Conclusion
Would this be the correct way of abstracting the model? Or am I overthinking it?