(C++ : Template) (참고) template 전달인자 주소로 받기

Posted by : at

Category : Cpp


template<typename T>
void foo(T a)     // 배열을 받을 순 없다.
{
}

template<typename T>
void goo(T& a)    // 결론은 참조로 받으면 배열을 받을 수 있다.
{
}

int main()
{
  int x[3] = {1,2,3};
  
  int y[3] = x;   // error
  int* p = x;     // ok
  int(&r)[3] = x; // ok
  
  foo(x);   
  // T : int[3] - error
  // T : int* - okay
  goo(x);
  // T : int[3] - okay
}
// 주의사항
template<typename T> void foo(T a, T b)
{
}
template<typename T> void goo(T& a, T& b)
{
}

int main()
{
  foo("orange", "apple");   // okay
  goo("orange", "apple");   // error
  // orange와 apple은 배열의 크기가 다른 배열이기에 같은 T로 초기화 불가능하다
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links