Pregunta

¿Hay alguna forma de ocultar a los miembros de datos privados de una clase de C ++ lejos de sus usuarios, en el archivo cpp? Pienso en los miembros privados como parte de la implementación y parece un poco hacia atrás declararlos en el archivo de encabezado.

¿Fue útil?

Solución

El " pimpl " idioma es la forma en que esto generalmente se maneja.

Ver

Otros consejos

quieres usar algo como el lenguaje PIMPL

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

Consulte Idiom Pimpl

La forma clásica de hacer esto es con un puntero proxy a una clase interna que implementa la funcionalidad. No hay forma de hacer definiciones parciales de clase en C ++ que yo sepa.

¿Ir comercial? ;)

Puede crear archivos de encabezado, en los que solo declara la API pública y protegida.

Al usuario solo se le presentan estos, que pueden incluir. Vinculan su código con una biblioteca, que usted construyó utilizando la API completa y las definiciones.

Para las funciones en línea: asegúrese de que se usen en código no en línea, entonces habrá una definición disponible en la biblioteca (no estoy seguro de que esté en línea en la implementación del usuario).

Para el código con plantilla no hay manera real de evitarlo. Una solución a medias es hacer código, que utiliza el código de plantilla con diferentes tipos de objetos. El usuario estará limitado a estos, porque son las únicas definiciones disponibles en su biblioteca.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top