Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are classes namespaces in C++?

Are classes namespaces in C++? I am asking this because the following code is valid. Could someone explain why?

Code:

#include <iostream>

class MainClass{
public:
  enum Bool{False, True};

  MainClass(){
    std::cout << "MainClass constructor" << True << std::endl;
  }
  ~MainClass(){
    std::cout << "MainClass destructor" << std::endl;
  }
};

int main(){
  MainClass::Bool myvar = MainClass::False << std::endl; //Why is this line valid?
  std::cout << myvar;
  return 0;
}
like image 677
Serket Avatar asked Dec 10 '25 07:12

Serket


2 Answers

Classes are not namespaces. However the Bool enum is defined in MainClass's scope, so the scope resolution operator :: applies.

like image 57
jkb Avatar answered Dec 13 '25 00:12

jkb


In C++ there is a namespace and there is also a class, a namespace is not a class. Your code is valid because you can nest enums, structs, classes, etc, within classes.

like image 36
bhristov Avatar answered Dec 13 '25 01:12

bhristov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!