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;
}
Classes are not namespaces. However the Bool enum is defined in MainClass's scope, so the scope resolution operator :: applies.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With