Bueno, al final buscando en internet pude solucionar el problema
Paso a comentarles como lo hice.
Lo que estoy haciendo un tetris con C++ y SDL mas que nada para agarrarle la mano a SDL y a la POO.
Las tres clases involucradas en este asunto son:
Tablero ---> Contiene un array con los datos de cada casillero del tetris, es un array de 10*20 (Tablero[10][20]) --->
clase 1Grafica ---> Esta clase es la encargada de imprimir en pantalla el juego, contiene una funcion llamada
imprimetablero que pasandole por referencia una matriz de 10*20 la imprime en pantalla como el tablero de tetris. --->
Clase 2Engine ---> Maneja las colisiones, borra las lineas, lee el teclado mediante otra clase, etc. Es la clase que llama a la funcion imprimetablero pasandole por referencia la tabla contenida en la clase Tablero ---> Clase 3
Probando de la manera que me sugirio pabloreda, el compilador me lo tomaba bien pero en realidad no funcionaba. Iba a probar hacerlo como me sugirio Eternal Idol pero no me queria dar por vencido y queria saber la manera de pasarlo como una matriz 2D y buscando encontre esta solucion:
// El codigo de Eternal Idol modificado usando la manera que encontre
#include <stdio.h>
class clase1
{
public:
int tabla[10][10];
void dump();
};
class clase2
{
public:
int funcion(int (*parametro)[10][20]);
};
class clase3
{
public:
clase1 cls1;
clase2 cls2;
int funcion(void);
};
void clase1::dump()
{
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
printf("%d ", tabla[y][x]);
}
printf("\r\n");
}
}
int clase2::funcion(int (*parametro)[10][20])
{
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
parametro[x][y] = 10 - y;
}
}
return 1;
}
int clase3::funcion(void)
{
cls2.funcion(&cls1.tabla);
return 0;
}
void main()
{
clase3 hola;
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
hola.cls1.tabla[y][x] = y;
}
}
hola.cls1.dump();
hola.funcion();
hola.cls1.dump();
}
Aunque me parece que de la manera propuesta por Eternal Idol estaría consumiendo menos memoria...