Может ли класс использовать имя пространства имен?
Является ли код С++ действительным?
namespace Foo
{
class Bar
{
// Class code here.
};
}
namespace Foo
{
namespace Bar
{
void SomeFunction();
{
// Function code here.
}
}
}
Другими словами, может ли быть пространство имен с тем же именем, что и класс?
Ответы
Ответ 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 в качестве ссылки.