That is the full code. I only changed the call to the constructor as advised. My IDE is Code::Blocks, the compiler is GNU GCC and C++11 is enabled, if that helps.
This might be compiler bug. You can either try doing something like Player gamer(Player::MAGE); or Player player1(Player::MAGE), player2(Player::MAGE);but if that doesn't work then I don't know what's wrong.
I... honestly don't know why I didn't think to try that. You really know you're not on your game when you don't think to create a bloody object! Anyway, thanks guys, it works now.
Might I ask, do any of you know any good tutorials to do with scope, and specifically class scope? I find this confusing.