Imam malu konfuziju oko rada sa namespace-om. O čemu se radi? Ukoliko napravim neki svoj namespace i u njemu definišem recimo jednu varijablu tipa int. i kada u main funkciji uključim cijeli taj namespace, i napravim varijablu koja se zove isto kao ta pomenuta koju sam napravio unutar namespacea, ne javlja nikakvu grešku i uredno ga kompajlira. Međutim ako umjesto uključivanje kompletnog tog namespace, uključim samo tu varijablu iz pomenutog namespacea, dobijem grešku prilikom kompajliranja. Evo na primjeru konkretno. Ovo radi bez greške pri kompajliranju:
Code:
#include <iostream>
namespace a
{
int m=5;
}
int main()
{
int m=10;
using namespace a;
std::cout<<m<<std::endl;
return 0;
}
#include <iostream>
namespace a
{
int m=5;
}
int main()
{
int m=10;
using namespace a;
std::cout<<m<<std::endl;
return 0;
}
A ovo izbaci grešku "m is already declared in this scope":
Code:
#include <iostream>
namespace a
{
int m=5;
}
int main()
{
int m=10;
using a::m;
std::cout<<m<<std::endl;
return 0;
}
#include <iostream>
namespace a
{
int m=5;
}
int main()
{
int m=10;
using a::m;
std::cout<<m<<std::endl;
return 0;
}
Zar uključivanje kompletnog namespacea nije "jače" od uključivanja objekata pojedinačno, tj zar se ne uradi isto ovo i kad uključim cijeli namespace + što bi se uključile i još neke definicije da ih je bilo unutar tog namespacea?