Название: Вопрос по Namespace. Отправлено: QDgara от Декабря 25, 2006, 12:33 Есть нестоклько неймспейсов Name1, Name2, Name3. Для каждого свой h файл и сpp файл. Вопрос в том: как в Name1 добавить Name2 и Name3?
добавлено спустя 32 минуты: Пока только нашёл вариант с перекрётным инклудом. В Name2.h и Name3.h добавляем #include <Name1.h> и помещаем неймспейсы в Name1. А Name2.h и Name3.h инклудить надо в Name1.h добавлено спустя 57 секунд: Мне почему-то этот способ не подуше, есть ещё варианты? Название: Вопрос по Namespace. Отправлено: Admin от Декабря 25, 2006, 12:40 ну можно так
using namespace NAME1 или так NAME1::MethodAny Название: Вопрос по Namespace. Отправлено: QDgara от Декабря 25, 2006, 13:02 А где тут добавления одного неймспейса в другой? Я только вижу обьяление Name1 , как неймспейс по-умолчанию.
Название: Вопрос по Namespace. Отправлено: Вудруф от Декабря 25, 2006, 13:06 Не понял вопроса...
Тебе что именно нужно? Вложенные namespace? Код:
Обращение к Name1 из Name2? Код:
Название: Вопрос по Namespace. Отправлено: QDgara от Декабря 25, 2006, 16:40 Цитата: "Вудруф" Не понял вопроса... Тебе что именно нужно? Вложенные namespace? Да. Именно вложенные namespace, но только чтоб каждый namespace в отдельном заголовочном файле определять. Это возможно? Название: Вопрос по Namespace. Отправлено: Вудруф от Декабря 25, 2006, 17:06 Зачем их определять в отдельном заголовочном файле? Они объявляются в месте использования, пусть даже и несколько раз...
1.h Код:
2.h Код:
Итого, когда мы подключим 1.h, мы будем видеть только первую функцию. Когда подключим оба файла - обе функции. Проблем это не вызовет. Рассмотрим такой вариант: 1.h Код:
2.h Код:
В такой ситуации, подключив оба h-файла, Name2 будут различными. Один в Name1, другой - глобальный. Это можно обойти так: Код:
Но это уже изврат. добавлено спустя 1 минуту: Суть-то тут в том, что namespace не является объектом. Это всего лишь средство разделения области видимости. |