Длинные/составные пространства имен при использовании C++ / CLI

Я работаю над проектом, где смесь C# (95%) и C++ / CLI (5%) используется.

Соглашение о присвоении имен пространства имен, к которому я стремлюсь, является старым добрым Company.Technology.Etc.. Это работает превосходное на C#. Теперь, я могу нести это через к классам C++? Я читал здесь, что составные пространства имен не поддерживаются в C++.

Застревают я с неуклюжим

namespace Company {
    namespace Technology {
        namespace Etc {
           ...
        }
    }
}

для пребывания последовательным?

Действительно ли стоит попытаться остаться последовательным?

7
задан biozinc 23 March 2010 в 13:20
поделиться

3 ответа

Да, вы застряли с этим, посмотрите эту ссылку . На мой взгляд, стоит использовать его как более читабельным и управляемым является использование пространств имен. Обычно я делаю это и на родном C ++.

8
ответ дан 6 December 2019 в 15:20
поделиться

Arg! Мы сделали это и здесь для некоторого кода. Я ненавижу это.

Есть ли здесь серьезная путаница в том, кто подписывает ваши чеки? Что произойдет, когда Компания будет куплена OtherCorp , или отдел маркетинга решит, что Technology впредь будет называться eTech ? Сколько кода нужно будет изменить?

Как правило, я против. Но в подобных ситуациях, когда пространства имен, вероятно, никогда не должны были создаваться изначально, и вы просто сохраняете себе будущие изменения кода, я рекомендую следующую строку вместо того, чтобы наклеивать эту огромную бородавку перед каждой ссылкой:

using Company :: Technology;

Пространства имен, как правило, следует создавать, когда у вас есть несколько связанных классов и объектов, которым вы хотите присвоить одно и то же имя в их идентификаторах. Таким образом, вместо того, чтобы называть их foo_operation и foo_class , вы выполняете foo :: operation и foo :: class .

2
ответ дан 6 December 2019 в 15:20
поделиться

Чтобы определить типы во вложенном пространстве имен, да, вы должны сделать это так, как вы описываете. Но для используйте типы, попробуйте пространство имен CTE = Company :: Technology :: Etc; , тогда вы сможете выполнить, например, CTE: : SomeClass someClass;

2
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: