#include <iostream>
template <typename T>
inline T SQUARE(T x) <--에러 없음.. 주석으로 막고 에러남 풀면 에러 엄청 발생..
{
return x * x;
}
//inline T SQUARE(T x); <--에러 남..
int main(void)
{
std::cout<<SQUARE(5.5)<<std::endl;
std::cout<<SQUARE(12)<<std::endl;
return 0;
}
/* <-- 에러 남..
inline T SQUARE(T x)
{
return x * x;
}
*/
--에러 없음..
위에처럼 프로토타입 선언해주고 어떻게 해야 에러 없이 할 수 있나요?
뭔가 코드가 더럽다
뭐라구요?
저런건 걍 매크로를 쓰자
다시 쓰겠음;;
template <typename T> 붙이셈
다람쥐v형 고마워요 어떻게 하는지 알았어요 형말 듣고.. 다시 쓰는데 자꾸 au*은 등록 못하는 문자라고 이지랄하네..;;
템플릿은 본문 전체까지 \"선언\"이라고 봐야 됨.
컴파일할때 템플릿 선언만 덜렁 있고 정의가 없으면 컴파일러가 뭘 보고 그 템플릿을 구체화할지 알 도리가 없기 때문
표준에 템플릿 선언과 정의를 분리하는 export라는 키워드가 있긴 한데 구현의 난해함으로 인해 사용할 수 있는 컴파일러가 거의... 아니 딱 하나밖에 없음. 그래서 다들 그냥 없는 키워드인 셈 치고 있고.
http://codepad.org/V31BBJ9y
inline은 함수의 정의에 붙입니다.
한 파일 내에서는 분리가 가능하나 보네... 킁
그냥 일반 함수랑 같다고 보시면 됨. 다만 사용 시점이 링크타임이 아니라 컴파일 타임이니 컴파일러가 볼 수 있게 한 컴파일 유닛 안에 넣어줘야 하는거|
포도맛묘목형님 kukyakya형님 말듣고 보니까 어떻게 사용하는지 바로 알겠네요.
실제론 사용안한다고 하시니까 구현할때는 사용하지 않도록 하겠습니다.