클래스 이름::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 | 



