๊ทธ ์ ์๋
foreach(IRole unit in this.roleList) {
if(unit is Fighter) {
return unit;
}
}
์ด๋ฐ ์์ผ๋ก ์ ์ด์ ์ข ๊ท์ฐฎ์๋๋ฐ ...
GetType ๋ฉ์๋ ์ฐ๋๊น ํด๋์ค ์ด๋ฆ์ ์คํธ๋ง ํ์ ์ผ๋ก ๋๊ฒจ๋ ์ฐพ์ ์๊ฐ ์์;;; ์ปดํฌ๋ํธ ํจํด์ผ๋ก ์บ๋ฆญํฐ๋ง๋ค ์ฌ๋ฌ๊ฐ์ง ์์ ํน์ ์ง์ ๋ฑ๋ฑ์ ๋ ๊ณ ์ฒ๋ผ ์กฐ๋ฆฝํ ๋ ค๊ณ ํ๋๊น
์๊พธ ๋ฐฐ์ด์ ์ด๋์ Fighter ํด๋์ค๊ฐ ์๋์ง ์ฐพ์์ผ๋๋๊ฒ ์๊ฐ๋ณด๋ค ์ง์ฆ์ค๋ฌ์์ ์๋ฅผ ๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ์.
๊ทธ๋ฌ๋ค ์ ๋ํฐ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ ๋ฐ ๋น์ทํ ์์ผ๋ก ์ฐพ๋๊ฒ ๋ ์ฌ๋ผ์ ์ฐพ์๋ณด๋ GetType ๋ฉ์๋๋ฅผ ์ฐ๋ฉด ์ฝ๋ค๊ณ ํด์ ํด๋ณด๋ ์๋๋๋ฏ.
ํธ์ฐ
์ ๋๋ฆญ์ผ๋ก ์ง๋๊ฑด ์ด๋จ๊น. ๋ฌธ์์ด๋ก ํด๋์ค ์ด๋ฆ ํ์ดํํ๋ฉด ํด๋์ค ์ด๋ฆ ๋ฐ๊ฟจ์ ๋ ๋์ ์๋์์
public object findRole<T>(){ foreach (var o in this.roleList) { if (o is T) { return o; } } return null;}
ํธ์ถํ ๋์๋ ์ด๋ ๊ฒ ์ฐ๋ฉด๋จ findRole<Fighter>()
๊ทธ๊ฑฐ reflection ์ด๋๊ฑด๋ฐ ๊ฐ๋น์ผ call์ด๋๊น ๋น๋ฒํ๊ฒ ํธ์ถํ์ง ๋ง๋๋ก
์ค;; ์ ๋ค๋ฆญ ใณใณ
c++๋ ์์ rtti - dc App