¿Es imprescindible que uses char*? Si no es así, prueba a usar la clase "string", te simplificará mucho la vida
¿Tienes prohibidos los contenedores? Si no es así, prueba a usar la clase "vector" para almacenar la lista de elementos. Igualmente, te simplificará mucho el código y la vida.
Y bueno, tratando tu problema:
¿Qué error te da?
Veo que usas "this", pero con tu código no queda claro que "setFiles" sea un método de una clase. Si esta función no pertenece a una clase, no puedes usar "this".
Y, ya puestos, ¿por qué en esa línea usas "new" y, un poco más abajo, "malloc"?? lo normal, si estás programando en C++, es que uses "new" y te olvides de malloc.
Ah si, se me olvidaba:
Esa reserva de memoria está mal. strlen(files[i]) te devuelve el número de caracteres de files[i]... pero no cuenta el carácter de fin de cadena, '\0'. Tienes que sumar 1 al resultado para que puedas hacer la copia sin pisar memoria.
Un saludo