Menu
Coddy logo textTech

Concepto de punteros opacos

Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 17 de 61.

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

C proporciona una técnica potente llamada punteros opacos para resolver esto. La idea es sencilla: declarar que una estructura existe en el archivo de encabezado, pero no revelar qué contiene. Esto se hace mediante 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 curly. Nunca definimos qué contiene Wallet. El compilador sabe que el tipo existe, pero no conoce su tamaño ni sus miembros. Esto significa que el código que incluye este encabezado solo puede trabajar con punteros a Wallet, nunca directamente con la estructura en sí.

¿Por qué es importante esto? Porque la definición real de la estructura vive oculta en el archivo .c, cualquier código que use tu encabezado no puede escribir w->balance ni sizeof(Wallet). Debe usar las funciones que proporcionas. Tú controlas todo el acceso a los datos y puedes cambiar la estructura interna más adelante sin romper ningún código que dependa de tu encabezado.

En la próxima lección, practicarás cómo definir el cuerpo real de la estructura dentro del archivo de origen, 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 Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C online