[C con Clase] Ayuda con array de arrays de arrays

srd4121 en njit.edu srd4121 en njit.edu
Sab Dic 13 12:58:14 CET 2008


Hola Nuria,

Bueno, David ya te ha contestado, pero quisiera agregar unos cuantos 
comentarios a lo dicho.


Sugiero usar el operador 'reinterpret_cast<>' ya que estamos usando C++. Esto 
indica al compilador y a nosotros mismos que queremos cambiar el tipo de dato 
sin modificar la información binaria. Por lo tanto, tendríamos lo siguiente,

char *A[4];

A[0] = reinterpret_cast< char * >( new char*[ atoi(argv[1]) ] );
A[1] = new char[ atoi(argv[2]) ];  // Cadena de caracteres

Como bien mencionaste, tienes que acceder a cada puntero de 'A[0]' para 
manipular cada elemento como si fuese un puntero. Para esto, tendrás que 
realizar un "cásting" para volver a reinterpretar el valor del tipo 
original: 'char **'. Por ejemplo,

char **B = reinterpret_cast< char ** >( A[0] );
B[0] = reinterpret_cast< char * >( new int[1234] );
B[1] = reinterpret_cast< char * >( new long double[5678] );
B[2] = reinterpret_cast< char * >( new bool[90] );

No sé si tienes pensado crear arrays de diferentes tipos, pero así lo he hecho 
en este ejemplo. Sugiero crear una función que realice estas conversiones, 
porque si no va a ser muy engorroso escribir todo esto cada vez que quieras 
acceder a un elemento de 'A[0]'.


Espero que esto te sirva.

Steven





Más información sobre la lista de distribución Cconclase