Hi everyone,
I´ve got some namespace problems I don´t really understand. I´ve got a header and an implementation file where three functions reside.
test.h
test.cpp, working versionCode:#ifndef TestH #define TestH namespace A { namespace B { namespace C { int get_x(); int get_y(); int get_z(); }; }; }; #endif
test.cpp version 2, not working.Code:#include "test.h" int A::B::C::get_x() { return 0; } int A::B::C::get_y() { return get_x() +1; } int A::B::C::get_z() { return get_y() +2; }
Here´s the calling codeCode:#include "test.h" using namespace A::B::C; int get_x() { return 0; } int get_y() { return get_x() +1; } int get_z() { return get_y() +2; }
Code:#include "test.h" int main() { int x = A::B::C::get_x(); int y = A::B::C::get_y(); int z = A::B::C::get_y(); }
My compiler (Borland C++ Builder 6) yields two error messages:
(1) ambiguity between A::B::C::get_x() and get_x()
(2) ambiguity between A::B::C::get_y() and get_y()
Now I have a couple of questions:
1) There are no functions get_x() and get_y() in the global namespace, so why is there an ambiguity?
2) Do I have to fully qualify the function name in my implementation file or does something exists that saves me from the extra typing?




Reply With Quote