Your romanNums array inside the constructor is local to that constructor, and is not the same thing as the private member.
Try this instead
Code:
RomanNumerals::RomanNumerals()
{
std::string romanNumsInitialiser[MAX_NUMS] = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX" };
std::copy(romanNumsInitialiser, romanNumsInitialiser + MAX_NUMS, romanNums);
}
The copy() algorithm is in the standard header <algorithms>.
Also, NEVER place a "using namespace std;" directive in a header file. It is extremely bad practice, for many reasons that have been amply documented many times on this site and in many places on the internet. That means, if you want to use std::string in a header file, then refer to it as "std::string" not as "string".