Подтвердить что ты не робот

Может ли класс использовать имя пространства имен?

Является ли код С++ действительным?

namespace Foo
{
    class Bar
    {
        // Class code here.
    };
}

namespace Foo
{
    namespace Bar
    {
        void SomeFunction();
        {
            // Function code here.
        }
    }
 }

Другими словами, может ли быть пространство имен с тем же именем, что и класс?

4b9b3361

Ответ 1

Вы не можете иметь соглашение, которое у вас есть в своем вопросе, потому что нет возможности устранить проблему Bar.

Мой компилятор говорит:

error C2757: 'Bar' : a symbol with this name already exists and therefore this name cannot be used as a namespace name

Ответ 2

"может существовать пространство имен с тем же именем, что и класс?"

Нет, если они находятся в том же пространстве имен, что и в вашем случае.

В противном случае, да. Все может иметь то же имя, что и все остальное, если они находятся в разных пространствах имен. См. этот поток stackoverflow в качестве ссылки.