You can only use the {} syntax when initializing arrays. For example,
int a[]={0,3,1};
In your case, you have to initialize each element of Warrior::startStats individually.
Alternatively, since all the elements have the same value, you can use std::fill(). http://www.cplusplus.com/reference/algorithm/fill/
1 2 3 4
//example use of std::fill() on an array
int a[1000];
std::fill(a,a+1000,12);
std::cout <<a[128];
Note that that creates an array separate from the class member.
Whats the point in putting...
int startStats[statNum];
... in the header file? I thought that initialised the array....
That only declares the array. You still have to initialize it.
Declare: add a symbol to the compiler's symbol table so that it can be used (compile time action).
Initialize: set data to a useful value for the first time (run time action).