RE:Como agrego un array de clases en otra clase
Una forma es:
En la clase X agrega un arreglo de punteros a la clase Y.
En el constructor de la clase X asegura que todos estos punteros queden a NULL.
Al agregar una instancia de la clase Y al arreglo podras hacerlo de la siguinte forma.
x->py[i] = new y();
donde x es la instancia de la clase x, py es el arreglo de punteros, de un largo maximo N,
la definición del arreglo puedes hacerla (ya sea en la parte publica o privada de la clase x) como sigue:
y *py[N];
en el destructor de la clase X deberas asegurarte que cada uno de los elementos del arreglo que sean distintos de NULL sean liberados.
algo así:
for (i = 0; i < N; i++) {
if (this->py[i] != NULL)
delete py[i];
}
esta es solo una forma. espero que sea util.