Menu
Coddy logo textTech

Conceito de Ponteiros Opacos

Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 17 de 61.

Até agora, quando definimos uma struct em um arquivo de cabeçalho, qualquer pessoa que inclua esse cabeçalho pode ver e acessar diretamente todos os seus membros. Isso viola o encapsulamento: o princípio de ocultar detalhes internos do código externo.

C fornece uma técnica poderosa chamada ponteiros opacos para resolver isso. A ideia é simples: declarar que uma struct existe no cabeçalho, mas não revelar o que há dentro dela. Isso é feito usando um tipo incompleto:

// wallet.h
typedef struct Wallet Wallet;  // Apenas declaração - sem corpo!

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

Observe que não há chaves. Nunca definimos o que Wallet contém. O compilador sabe que o tipo existe, mas não conhece seu tamanho nem seus membros. Isso significa que o código que inclui este cabeçalho só pode trabalhar com ponteiros para Wallet, nunca diretamente com a própria struct.

Por que isso importa? Como a definição real da struct fica oculta no arquivo .c, qualquer código que use seu cabeçalho não pode escrever w->balance nem usar sizeof(Wallet). Ele deve usar as funções que você fornece. Você controla todo o acesso aos dados e pode alterar a estrutura interna posteriormente sem quebrar nenhum código que dependa do seu cabeçalho.

Na próxima lição, você praticará a definição do corpo real da struct dentro do arquivo-fonte, concluindo o padrão de ponteiro opaco.

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de C online