Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can a class share a namespace's name?

Tags:

Is the following C++ code valid?

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

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

In other words, can there be a namespace with the same name as a class?

like image 556
Maxpm Avatar asked May 02 '11 11:05

Maxpm


People also ask

Can a class have the same name as a namespace?

Inside a namespace, no two classes can have the same name.

Can two class have same name?

You cannot have two classes with the same name.

Can a class be a namespace C++?

No, namespaces and classes are different. However, namespaces and classes both introduce a scope which may be referred to using the scope resolution operator :: . The using namespace N; declaration can only apply to namespaces. It's not possible to do something similar for a class.

Can a class have a member of itself?

Show activity on this post. No, because the object would be infinitely large (because every Node has as members two other Node objects, which each have as members two other Node objects, which each... well, you get the point).


2 Answers

You cannot have the arrangement you have in your question because there is no way to disambiguate Bar.

My compiler says:

error C2757: 'Bar' : a symbol with this name already exists and therefore this name cannot be used as a namespace name 
like image 196
quamrana Avatar answered Oct 19 '22 22:10

quamrana


"can there be a namespace with the same name as a class?"

No, If they are in the same namespace, as in your case.

Otherwise, yes. Anything can have the same name as anything else if they are in different namespaces. See this stackoverflow thread as reference.

like image 43
Ozair Kafray Avatar answered Oct 19 '22 23:10

Ozair Kafray