(C++ : Template) typename 정의

Posted by : at

Category : Cpp


class Test
{
public:
  enum { value1 = 1 };
  static int value2;
  
  typedef int INT;
  using SHORT = short;    // C++ 11
  
  class innerClass {};
};

int Test::value2 = 1;

int main()
{
  // 클래스 내부의 호출은 두 가지 호출이 존재
  // 값을 호출
  int n1 = Test::value1;
  int n2 = Test::value2;
  
  // 타입을 호출
  Test::INT a;
  Test::SHORT b;
  Test::innerClass c;
}
int p = 0;

class Test
{
public:
  // enum { DWORD = 5 }
  // typdef int DWORD;
};

template<typename T>
int foo(T t)
{
  T::DWORD * p;   // T는 값으로 해석이 될까 타입으로 해석이 될까?
  // 결론적으론 컴파일러는 값으로 해석을 한다.
  
  typename T::DWORD * p;    // typename을 지정해 줘야 타입이라고 컴파일러에게 알려줄 수 있다.
  return 0;
}

int main()
{
  Test t;
  foo(t);
}

About Taehyung Kim

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

Star
Useful Links