¿Es posible hacer un espacio de nombre amigo de una clase, decir que tengo un espacio de nombres de prueba de unidades con muchas clases y quería que el espacio de nombres de prueba fuera amigo de una clase para que tuviera acceso a detalles privados de implementación.Interacción de espacio de nombres y amigo en C++?
5
A
Respuesta
1
No, esto no es posible en C++. Francamente, huele a pobre diseño.
0
Si está utilizando .NET, es posible que desee echar un vistazo a InternalsVisibleTo attribute. De todos modos, tenga en cuenta que esto funciona para ensamblajes completos, no para espacios de nombres únicos.
Cuestiones relacionadas
- 1. amigo clase función dentro de un espacio de nombres
- 2. Espacio de nombres Xml y C# csproj
- 3. C++ Espacio de nombres pregunta
- 4. Problema de espacio de nombres en C++
- 5. Constante de espacio de nombres en C#
- 6. incluyen y el uso de espacio de nombres en C++
- 7. Espacio de nombres enfrentadas en C++
- 8. C++ extern mundial amigo "C" no puede alcanzar miembro privado de la clase de espacio de nombres
- 9. C++ Espacio de nombres dolores de cabeza
- 10. Alias de espacio de nombres C++ y declaración directa
- 11. reglas de nomenclatura y uso del espacio de nombres C++
- 12. Espacio de nombres de C++ y variables estáticas
- 13. Funciones de amigo en C++
- 14. Métodos dentro del espacio de nombres C#
- 15. ¿Cómo puedo definir amigos en el espacio de nombres global dentro de otro espacio de nombres C++?
- 16. C++ - Espacio de nombres vs. funciones estáticas
- 17. Espacio de nombres y conflicto de clase
- 18. Espacio de nombres y conflicto de clase (?)
- 19. Espacio de nombres y espacios de nombres secundarios
- 20. Convenciones de alias de tipo/espacio de nombres en C#
- 21. Espacio de nombres confusión y macros
- 22. WCF y espacio de nombres System.Configuration
- 23. espacio de nombres, argparse, y el uso
- 24. En C++, ¿qué es un "alias de espacio de nombres"?
- 25. convención de codificación del espacio de nombres raíz en C++
- 26. referencias de espacio de nombres en C# vs. VB.Net
- 27. Acceso espacio de nombres de los padres en C++
- 28. JavaScript Espacio de nombres
- 29. problemas de espacio de nombres
- 30. :: sin espacio de nombres
¿Por qué dices que es un mal diseño? Creo que posiblemente podría hacerse y ser útil. No hay mucha diferencia entre una clase y un espacio de nombres, excepto este puntero. No veo por qué la declaración de amigo no podría funcionar para un espacio de nombres, lo que permite que su función miembro pueda acceder a los detalles de implementación de una clase. Esto podría permitir que las funciones no miembro relacionadas con una clase tengan fácil acceso a las partes internas de esa clase. Básicamente, ¿cómo lo harías ahora? ¿Usa una declaración de clase cuando un espacio de nombre sería suficiente y amigo de esa clase? amigo de todas las funciones que necesitan acceso a la clase? – n1ckp
Hay muchas, muchas diferencias entre clases y espacios de nombres. –
Una diferencia es que un espacio de nombres no está cerrado: siempre lo abres y comienzas a agregar cosas a él. Por lo tanto, declarar un espacio de nombre para un amigo sería abrirse totalmente. Desatar una clase, que finaliza al cierre}; –