블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

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*형이 되어버린다.


출처 : http://blog.naver.com/doogie90/130102637818

반응형
Posted by blueasa
, |