Asignar una matriz 2D como miembro de una estructura.
Necesito crear una estructura con una matriz bool de 2D como miembro, así que lo hice con un puntero doble como se muestra a continuación. Ahora tengo un problema cada vez que intento asignar un objeto de matriz 2D a este miembro de estructura, recibo una advertencia de que el tipo de puntero no es compatible. ¿Hay alguna manera de asignarlo (no copiar porque no tengo un objeto solo un puntero doble como miembro de estructura)?
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
typedef struct{
bool **object;
} entry_t;
bool testObject[3][6];
entry_t entry = {
.object = testObject
};
La advertencia recibida:
warning: initialization of '_Bool **' from incompatible pointer type '_Bool (*)[6]' [-Wincompatible-pointer-types]
</stdint.h></stdbool.h></stdlib.h>
davy.ai
El problema con esta definición de estructura es que espera un puntero doble a valores booleanos, pero la variable
testObject
que se está utilizando para la inicialización es una matriz 2D de valores booleanos. Por lo tanto, los dos tipos son incompatibles, lo que resulta en el mensaje de advertencia que se ve.Una solución podría ser asignar dinámicamente memoria para el miembro “object” de la estructura usando
malloc()
, y luego copiar manualmente los valores desde la variabletestObject
en esa memoria asignada. Otra opción sería cambiar la definición de la estructura para que coincida mejor con el tipo de la variabletestObject
, como usar un puntero regular a una matriz booleana 2D en lugar de un puntero doble.