El error está en el constructor:
Código:
SchoolClass::SchoolClass(int NumberStudents)
{
ClassData = new int(NumberStudents); // Los paréntesis indican que se asignará memoria para un int el cual tendrá inicialmente el valor de NumberStudents
ClassDataIndex = 0;
}
debería ser:
Código:
SchoolClass::SchoolClass(int NumberStudents)
{
ClassData = new int[NumberStudents]; // Un arreglo de int con tamaño NumberStudents
ClassDataIndex = 0;
}
El compilador no lo reporta porque de ambas formas es correcto, pero hacen cosas diferentes.