본문 바로가기
2D 프로그래밍 수업(일부비공개)

수업 27일차 - 템플릿 (template) / 유틸리티 (utility)

by MY블로그 2022. 11. 17.

Template - 고정 형태 틀 형판 ( STL 의 Standard Template Library)

 

(일상에서 들어본 템플릿은 PPT 엑셀 등에서 기본적으로 제공되는 폼 에서 많이 보았다.)

(정해진 틀에서 내용만 바꿔서 사용할수 있는 폼들)

 

수업에서 자주 쓰던 셔플과 스왑처럼 중복되는 함수를 템플릿으로 만들수있다.

 

Utility - 유용성 다용도 다목적 공통의 (헤더파일의 이름은 알아보기 쉽게 정한다)

유틸리티라는 헤더파일을 만들어서 그내부에 공통된 함수들을 템플릿으로 만들어 넣는다.

 

template<typename T> - <type 자료형 > 자료형의이름을 T로두었다.

<>꺽쇠 붙으면 모든자료형을 다 넣을수 있다.

T 라는 이름에 불려오는 멤버변수의 자료형들은 자동으로 치환되어 불려오게된다.(편리)

 

(ex. 우리는 vector<자료형> 에서도 꺽쇠를 본적이있다. 벡터의 이부분또한 template 이다/모든자료형이 다 들어올수있다)

템플릿의 단점 : 헤더와(선언) CPP(정의)는 보통 나뉘어서 미리컴파일과 메인컴파일을 나눌수있는데

템플릿은 헤더(선언)부분에 정의가 붙는다.

때문에 static 이라는 것이 사용된다(현재 진도x,다음주진도예정) (static = 고정된 이라는 의미)

static template<typename T>

템플릿의 단점? 선언과 정의를 따로(헤더와 CPP에 따로) 둘 수 없다.

우클릭으로 빠른정의만들기 할때 CPP에연결이되지 않으며 헤더파일 아래쪽에 생성/연결된다.

이는 즉 컴파일 작업이 이루어질때 utility 가 포함된 cpp 갯수만큼 컴파일 작업이 여러번 진행된다.

때문에 static 이라는 고정기능을 사용한다. (솔찍히 아직 잘 이해가 되지 않는 느낌이다)

 


 

template<typename T> / static void Swap / static void Shuffle / 함수 사용 전후 코드

 

유틸리티헤더파일과 템플릿함수&nbsp; 사용전과 사용후의 코드 변화 (블랙잭 - 셔플)
유틸리티헤더파일과 템플릿함수 사용전과 사용후의 코드 변화 (섯다 - 셔플)
유틸리티헤더파일과 템플릿함수 사용전과 사용후의 코드 변화 (섯다 - 스왑)

위의 멤버변수는 card 이고 아래는 huda 인 이뉴는

같은솔루션 파일에서 다른 코드의 이름과 중복을 피하려고 이름 변경 하였기때문이다.

그부분은 신경쓸 필요 없다.

 

솔찍히 크게 바뀌는게 없다 생각될수 있으나 같은 기능의 합수를 여러번 만들지 않고 사용할수 있게되기때문에

더 복잡하고 고수준의 코드를 짜기위해서는 꼭 필요 할 듯 하다.


 

Utility.h 헤더파일또한 메인헤더파일인 stdafx.h 에 포함시킬때 주의할점은 

유틸리티 헤더파일에는 스왑과 셔플의 함수가 들어있는데 이 함수들이 만일

블랙잭 섯다 등에 사용되는 헤더파일의 아래에 위치할경우 오류가 생긴다!

꼭 프로그램의 작동순서인 위에서 아래 방향을 참고하여 함수가 사용되기위해서 위쪽에 위치시켜야된다.

 


 

*알아두면 유용한 기능*

 

*ctrl + s 저장은 인텔리센스를 다시 잡아주는 역활도함. 자주쓰자 (작업중인 코드 저장을 위해서라도)

(오류를 수정하였을때 오류.주의 등이 그대로 남아있는 경우에 인텔리센스를 바로 다시잡아보면좋다)

 

클래스의 .h(헤더) / .cpp 를 왕복하기 좋은 단축키설정. ctrl + ~ 키로 해두면 편리하다. (아래사진 참고)

헤더파일하고 해당CPP하고 전환할수있는 단축키 설정

 

미리컴파일된 헤더 설정하기 (아래 사진  참고) 이설정을 해두면 자동으로 미리컴파일이 돌아간다.

우리는 수업에서 헤더파일을 만들었기때문에 만들기 설정으로 쓴다.

 

댓글