How to use namespaces in C++ where it is accessible in different header files. Lets say I have this below:
// namespaces
#include <iostream>
using namespace std;
namespace first
{
int var = 5;
}
namespace second
{
double var = 3.1416;
}
int main () {
cout << first::var << endl;
cout << second::var << endl;
return 0;
}
and I want t use var variable from first namespace in another class… that is defined and implemented in another .h and .cpp file?
//server.h
#ifndef SERVER_H
#define SERVER_H
class server{
server();
//blah
};
#endif SERVER_H
//server.cpp
server::server()
{
first::var = 3;
}
is this possible to do it like this? When I try I get an error that says that my namespace is not defined. And if i put using namespace first in the .h or .cpp it says there is no namespace called first…
Besides having the namespace in a header, you need to make the variable extern:
If the variable is not
extern, a symbol will be generated wherever the header is included, and you’ll get linker errors.If you don’t want the extra header, you can just declare the variable as
externin the same namespace where you want to use it:Note some answers might claim that you should make the variable
static. This is wrong, although it will compile, as then the variable won’t act as a global. A copy of it will be created for every translation unit.