Hola,
Dices que trabajas en C++, no se si con el operador new te permite usar variables como tamaño del array. Con esto tendras que usar un puntero, y creo que tendras tambien que acordarte de hacer un delete cuando acabes de trabajar con el array:
Código:
int tamano=23;
CStringArray * mi_array=new CStringArray[tamano];
// tu codigo
delete[] mi_array; // para liberar la memoria
Te advierto que no se si funcionara, ni siquiera estoy seguro de la sintaxis.
Si usas C, podrias usar un puntero y la funcion malloc().
Saludos.