Lo único que se me ocurre es que en lugar de definir en la clase padre una variable de tipo array, definas una función que acepte dos argumentos (fila y columna) y ésta la sobreescribes en las clases hijas, las cuales sí tendrán una variable de tipo array, que sea privada, la cual se utilizará para devolver el valor adecuado de la función.
Ej (en Delphi y escrito ene el Chrome, así que igual cometo faltas):
Código:
TEscenario=class{
public
Constructor Create(); virtual; //Creo que es equivalente a TEscenario() de C...
function Tiles(AFila, AColumna: integer): byte; virtual; abstract; //La declaro abstract porque has dicho que en TEscenario no se sabe nada de los tiles....
}
TEscenario1=class(TEscenario)
{
private
fTiles: array [0..27-1] of array [0..177-1] of byte;
public
Constructor Create(); override;
function Tiles(AFila, AColumna: integer): byte; override;
}
//Constructores, inicializaciones, etc...
function TEscenario1.Tiles(AFila, AColumna: integer): byte;
begin
//Si quieres puedes incluso realizar alguna comprobación de que AFila y AColumna sean correctos...
Result:=fTiles[AFila][AColumna];
end
Si quieres tener acceso también para escribir, simplemente defínete dos funciones setTile(AFila, AColumna: integer; AValor: byte) y getTile(AFila, AColumna: integer): byte, siguiendo más o menos el mismo principio mostrado.
En Delphi existe la posibilidad de usar las property, que puede acceder a una propiedad llamando a métodos de escritura / lectura. No sé si existe en C (creo que sí). Te he mostrado básicamente eso.
Espero te sirva de ayuda.
Un saludo,
LoPiTaL