이름공간(namespace)의 함정.
Programming/C/C++ / 2011. 3. 13. 14:35
name1 라는 이름공간과, 이에 속해있는 이름공간 name2 가 있고,
각각에는 Parent라는 이름을 가진 클래스가 있다고 하자.
즉, name1::Parent 와 name1::name2::Parent 클래스가 있는 상황이다.
이 때, Child라는 이름의 클래스를 하나 만들려고 한다.
name1::Parent 을 상속하며, 멤버 변수로는 name1::name2::Parent 클래스의 포인터를 가진다.
작업하는 코드의 상황은 이렇다.
이름은 Parent 로 같지만, 이름공간이 다른 이것들을 어떻게 표현해야할까?
본래, 자신이 있는 이름공간을 우선으로 검색되는 것이 기본 룰이지만, 이 경우는 예외다.
주목해야할 부분은 멤버 변수 선언 부분의 name2::Parent 이다.
자신이 name2 이름공간에 있음에도 불구하고, name2를 붙여주었다.
상속하는 클래스의 이름은 지금 있는 이름공간보다 우선시 되기 때문이다.
즉, name2를 명시하지 않고 단순히 Parent *p; 로 멤버 변수를 선언한다면,
p는 name2::Parent*형이 아니라 name1::Parent*형이 되어버린다.
[출처] [C++] 이름공간(namespace)의 함정.|작성자 레도
출처 : http://blog.naver.com/doogie90/130102637818
반응형
'Programming > C/C++' 카테고리의 다른 글
fmod double형 나눗셈의 나머지 구하기 (0) | 2011.03.24 |
---|---|
정수부/소수부 분리, 소수점 이하만 구하는 함수 예제: modf() (0) | 2011.03.17 |
카메라 흔들기 (0) | 2011.03.05 |
[게임코드]손쉽게 카메라 흔들기 (0) | 2011.03.04 |
임의의 표면에 데칼 적용하기(소스포함) (2) | 2011.03.04 |