CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 6 of 6

Threaded View

  1. #1
    Join Date
    Nov 2006
    Location
    Essen, Germany
    Posts
    1,344

    namespace confusion

    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
    Code:
    #ifndef TestH
    #define TestH
    
    namespace A {
    namespace B {
    namespace C {
    
    int get_x();
    int get_y();
    int get_z();
    
    };
    };
    };
    #endif
    test.cpp, working version
    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;
    }
    test.cpp version 2, not working.
    Code:
    #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;
    }
    Here´s the calling code
    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?
    Last edited by GNiewerth; May 8th, 2008 at 05:52 AM.
    - Guido

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured