Pergunta

Existe uma maneira de esconder os membros de uma classe ++ longe de seus usuários, C dados privados no arquivo CPP? Acho dos membros privados como parte da implementação e parece um pouco para trás para declará-los no arquivo de cabeçalho.

Foi útil?

Solução

A expressão "pimpl" é como este é geralmente tratada.

Veja

Outras dicas

você quiser usar algo como o Pimpl idioma

http://en.wikipedia.org/wiki/Opaque_pointer

O modo clássico de fazer isto é com um ponteiro proxy para uma classe interna que implementa a funcionalidade. Não há nenhuma maneira de fazer as definições de classe parcial em C ++ que eu conheço.

O comercial? ;)

Você pode criar arquivos de cabeçalho, em que só declaram o público e API protegido.

O usuário só é apresentado com estes, que podem incluir. Eles ligar seu código com uma biblioteca, que você construiu usando a API completa e as definições.

Para funções inlined:. Certifique-se que são usados ??em código não-inline, em seguida, haverá uma definição disponíveis na biblioteca (não tenho certeza que vai ser embutido na implemenation usuário, no entanto)

Para código templated não há nenhuma maneira real ao redor. Uma solução half-hearted é código de marca, que utiliza o código de modelo com diferentes tipos de objetos. O usuário será limitado a estes, porque são as únicas definições disponíveis em sua biblioteca.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top