>백엔드 개발 >C++ >C 템플릿에 'typename' 키워드가 필요한 시기와 이유는 무엇입니까?

C 템플릿에 'typename' 키워드가 필요한 시기와 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-19 03:46:11262검색

When and Why Do You Need the

"typename" 키워드 구문

"typename" 키워드는 C에서 종속 이름인 중첩 이름을 참조할 때 사용됩니다. , 알 수 없는 매개변수가 있는 템플릿 인스턴스 내에 중첩되어 있음을 의미합니다. 이 키워드는 특히 유추된 엔터티(값, 유형 또는 템플릿)가 모호한 경우 이름이 유형을 나타냄을 명시적으로 지정합니다.

중첩 이름에서 "typename" 사용

다음 코드 조각을 고려하세요.

template<class K>
class C {
    struct P {};
    vector<P> vec;
    void f();
};

template<class K> 
void C<K>::f() {
    typename vector<P>::iterator p = vec.begin();
}

여기서 "typename"은 p를 유형, 즉 P 구조체의 벡터에 대한 반복자로 선언하려면 키워드가 필요합니다. "typename"이 없으면 컴파일러는 시퀀스 벡터

::iterator를 값이나 함수를 나타내는 표현식으로 해석하며 이는 올바르지 않습니다.

"typename"이 필요한 추가 사례

중첩된 이름 외에도 다음에서는 "typename" 키워드도 필요합니다. 시나리오:

  • 템플릿 템플릿 인수의 유형을 참조할 때
  • 템플릿 클래스의 멤버 함수를 다른 템플릿 클래스의 친구로 선언할 때
  • 템플릿 매개변수 팩 유형
  • 종속 이름을 특정 유형으로 캐스팅하는 경우

위 내용은 C 템플릿에 'typename' 키워드가 필요한 시기와 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.