Menu
Coddy logo textTech

Concepto de punteros opacos

Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 17 de 61.

Hasta ahora, cuando definimos un struct en un archivo de cabecera, cualquiera que incluya esa cabecera puede ver y acceder directamente a todos sus miembros. Esto rompe el encapsulamiento: el principio de ocultar los detalles internos del código externo.

C proporciona una técnica poderosa llamada punteros opacos para resolver esto. La idea es simple: declarar que un struct existe en la cabecera, pero sin revelar qué hay en su interior. Esto se hace utilizando un tipo incompleto:

// wallet.h
typedef struct Wallet Wallet;  // Solo declaración - ¡sin cuerpo!

Wallet *create_wallet(int initial_balance);
void free_wallet(Wallet *w);

Observa que no hay llaves: nunca definimos lo que contiene Wallet. El compilador sabe que el tipo existe, pero no su tamaño ni sus miembros. Esto significa que el código que incluye este encabezado solo puede trabajar con punteros a Wallet, nunca con la struct misma directamente.

¿Por qué es esto importante? Debido a que la definición real de la estructura (struct) reside oculta en el archivo .c, cualquier código que utilice su encabezado no puede escribir w->balance o sizeof(Wallet). Deben utilizar las funciones que usted proporciona. Usted controla todo el acceso a los datos y puede cambiar la estructura interna más adelante sin romper ningún código que dependa de su encabezado.

En la próxima lección, practicarás la definición del cuerpo real del struct dentro del archivo fuente, completando el patrón de puntero opaco.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Object Oriented Programming