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.