2012. 9. 27. 22:53
template C++ c++2012. 9. 27. 22:53
template<typename T>
void print2nd(const C& container)
{
if(container.size() >= 2)
{
typename C::const_iterator iter(container.begin());
}
}
C::const_iterator는 중첩 의존 타입이름이다. C의 의존하는 타입임.
C::const_iterator가 type이라는 것을 컴파일러에게 알려주어야 함
그러긴 위해서 앞에 typename을 붙인다.
//여기서 typename이랑 class는 같음
template<typename C>
void f(const C& container, typename C::iterator iter); //첫번째 인자는 typename을 쓰면 안되고, 두번째는 써야함
//클래스 식별자로 있을때는 쓰면 안됨
template<typename T>
class Dervied : public Base<T>::Nested{
public:
explicit Derived(int x):Base<T>::Nexted(x)
{
typename Base<T>::Nested temp;
}
}
'c++' 카테고리의 다른 글
c++ operator new (0) | 2012.10.01 |
---|---|
c++ 특성정보 (0) | 2012.09.28 |
c++ quiz4 (0) | 2012.09.27 |
c++ quiz3 (0) | 2012.09.27 |
c++ strategy 패턴 (0) | 2012.09.27 |