• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

하위 네임스페이스에서 상위 네임스페이스의 함수에 접근할 수 있는 이유?

22.07.13 14:49 작성 조회수 190

0

  • MySpace1안의 InnerSpace라는 하위 네임스페이스에서
    MySpace1의 함수인 doSomething(int a, int b)을 호출해보았습니다.
    InnerSpace에서 MySpace1의 함수에 접근할 수 있는 이유가 뭔가요?
    main에서 함수를 호출하는 원리와 같은가요?

  •  

    namespace MySpace1
    {
        int doSomething(int a, int b);

        namespace InnerSpace
        {
            int my_function()
            {
                cout << doSomething(3, 4) << endl;
                return 0;
            }
        }
        int doSomething(int a, int b)
        {
            return a + b;
        }
    }

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.07.15

namespace에서 접근할 수 있는 함수에는

자신의 부모 namespace의 함수까지도 포괄됩니다.

namespace parent {
    void parentFunc();
    namespace child {
        void childFunc();
        // can use parentFunc() as is 
        parentFunc();
    }
    //should use fully qualified name for childFunc()
    child::childFunc();
}

 

자식 namespace 에서는 위 코드와 같이 바로 부모 namespace 함수를 호출할 수 있고,

부모 namespace에서는 자식 namespace 이름을 명시하여 접근할 수 있습니다.