Возможно ли создать имя пространства имен для класса, скажем, у меня есть пространство имен тестовых модулей с множеством классов, и я хотел, чтобы пространство имен тестов было дружественным классу, чтобы он имел доступ к частным сведениям о реализации.Взаимодействие пространства имен и друга в C++?
5
A
ответ
1
Нет, это невозможно в C++. Честно говоря, это плохой дизайн.
0
Если вы используете .NET, вы можете взглянуть на InternalsVisibleTo attribute. В любом случае обратите внимание, что это работает для целых сборок, а не для отдельных пространств имен.
Смежные вопросы
- 1. F # Пространства имен/Модули и Взаимодействие с C#
- 2. Пространства имен и C++
- 3. Определить друга метод шаблона вне пространства имен
- 4. метод друга из другого пространства имен
- 5. Пространства имен в C#
- 6. Использование и использование имен пространства имен C++
- 7. C++ Пространства имен и шаблоны
- 8. C++ макросы и пространства имен
- 9. C++: «Пространства имен классов»?
- 10. Элементы пространства имен C++
- 11. Пространства имен в глобальном пространстве имен C#
- 12. Пространства имен и перегрузка операторов в C++
- 13. Наследование и Пространства имен в C++
- 14. Ошибки пространства имен C++
- 15. Пространства имен и пространства подпространств
- 16. Действительность пространства имен в C++
- 17. Циклические пространства имен в C#
- 18. Конфликт пространства имен в C#
- 19. Префикс пространства имен в C#
- 20. ошибка пространства имен в C#
- 21. Передача пространства имен в C#
- 22. Использование пространства имен в C++?
- 23. Константа пространства имен в C#
- 24. Псевдоним пространства имен в C++
- 25. Пространства имен в C с
- 26. Область пространства имен в C#
- 27. Именование имен и пространства имен
- 28. группы сущностей и пространства имен
- 29. C++ Ошибка пространства имен: не является членом пространства имен
- 30. Вопросы пространства имен: форвардные декларации и пространства имен смешивания
Почему вы говорите, что это плохой дизайн? Я думаю, что это возможно сделать и быть полезным. Существует не так много различий между классом и пространством имен, кроме этого указателя. Я не понимаю, почему объявление друга не может работать для пространства имен, что позволяет его функции-члену иметь доступ к деталям реализации класса. Это может позволить функциям, не являющимся членами, связанным с классом, легко получить доступ к внутренним функциям этого класса. В принципе, как вы это сделаете прямо сейчас? Использовать объявление класса, когда пространство имен было бы достаточным и для этого класса? друг каждой функции, которая нуждается в доступе к классу? – n1ckp
Существует множество различий между классами и пространствами имен. – 2010-07-08 07:57:20
Одно отличие состоит в том, что пространство имен не закрыто: вы всегда открываете его и начинаете добавлять к нему вещи. Таким образом, объявление пространства имен, которое было бы полезным для друга, было бы полностью раскрыто. Unleike класс, который заканчивается при закрытии}; –