Why not just declare objects?
// Move.h extern const Move TACKLE, GROWL, HYPER_BEAM, ...; // Move.cpp const Move TACKLE(...); const Move GROWL(...); const Move HYPER_BEAM(...);
If you need these in a table (e.g., to refer to them by integer ID), then you can build that separately.

Find content
Not Telling