Buenas,
Veamos cómo explico esto sin tener que poner todo el código... Lo resumiré.
Tengo un atributo: private Movimiento[] undo; (array que almacena cosas objetos del tipo Movimiento).
Y hay un momento en el código, en el que tengo que almacenar uno de esos movimientos, después otro, después otro... etc.
Para almacenarlo la instrucción es: this.undo[0] = mov; (para almacenar el primero, por ejemplo).
Pues esto, no sé por qué, me da error. La cosa es que si en vez de ser un array, es un atributo como este: private Movimiento undo; Y después hiciera esta instrucción: this.undo = mov; Entonces no me da error! y efectivamente, undo almacena ese mov.
Es decir, me deja almacenar un objeto del tipo Movimiento, pero no me deja meter objetos del tipo Movimiento en un array.
¿Alguien tiene idea de por qué es esto? Es que creo que no es problema del código (por eso no lo pongo) sino que es un problema mío, de no entender algo a la hora de realizar esto.
PD: Si alguien necesita que lo explique mejor o que ponga trozos de código, por favor que me lo diga (porque el programa está en un proyecto y sería muy hardcore poner todas las clases aquí).
SOLUCIONADO: era la mayor tontería del mundo, no había inicializado el array en la constructora