반응형
클래스 이름::xx 접근 가능한 요소들
-
값: enum 상수, static 멤버 변수
-
타입: typedef, using
템플릿 의존적으로 타입의 이름에 접근할때는 typename 키워드를 붙여야한다.
-
T::DWORD -> 컴파일러가 DWORD를 값으로 해석
-
typename T:DWORD -> 컴파일러가 DWORD를 타입으로 해석
템플릿이 아닌 경우에는 typename을 사용할 수 없다.
-
typename T::DWORD* p; // OK
-
typename Test::DWORD* p; // Error
#include <iostream>
using namespace std;
class Test
{
public:
enum { value1 = 1 };
static int value2;
typedef int INT;
using SHORT = short;
class innerClass {};
using DWORD = int;
};
int Test::value2;
template<typename T>
int foo(T t)
{
// 타입으로 해석
//typename T::DWORD* p;
// 값으로 해석
//T::DWORD* p;
return 0;
}
int main()
{
Test t;
foo(t);
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 템플릿 template 키워드 (0) | 2021.01.01 |
---|---|
C++ 템플릿 value_type (0) | 2021.01.01 |
C++ 템플릿 template과 friend (0) | 2020.12.31 |
C++ 템플릿 일반화된 복사 생성자(Generic copy constructor) (0) | 2020.12.31 |
C++ 템플릿 클래스 템플릿(Class template) (0) | 2020.12.31 |