Ok, me respondo a mi misma. ya encontre la solucion y como siempre despues de saberlo parece lo mas obvio del mundo!
y enn algunos casos lo es 8-).
Veamos:
- mapa(CELDA clda);
- mapa::mapa(clda)
Como ya declare:
CELDA clda[17][20];
resulta innecesario enviarlo por parametro. ya que pues supongo que el compilador se pregunta: ¿Ya no lo declaraste, para qué enviarmelo por parametro?
Por lo que la solucion es quitar
clda de los parametros, e igualmente dentro de la funcion lo reconoce (cosa que yo no sabia)