문제

C ++ 0x에는 템플릿 별칭 (템플릿 typedef라고도 함)이 있습니다. 여기 를 참조하세요.C ++의 현재 사양은 그렇지 않습니다.

해결 방법으로 무엇을 사용하고 싶으십니까?컨테이너 개체 또는 매크로? 그만한 가치가 있다고 생각하십니까?

도움이 되었습니까?

해결책

<인용구>

해결 방법으로 무엇을 사용하고 싶으십니까?컨테이너 개체 또는 매크로?그만한 가치가 있다고 생각하십니까?

표준적인 방법은 다음과 같은 메타 함수를 사용하는 것입니다. 라코 디스

이것은 STL (allocator::rebind<U>)과 Boost를 포함한 많은 라이브러리에서도 사용됩니다. 생물 정보 라이브러리 에서 광범위하게 사용합니다.

부풀어졌지만 99 %의 경우 최고의 대안입니다.여기에서 매크로를 사용하는 것은 많은 단점이 있습니다.

(편집 : Daniel이 그의 의견에서 지적한대로 Boost / STL 규칙을 반영하도록 코드를 수정했습니다.)

다른 팁

<인용구> 라코 디스

가상 소멸자가없는 클래스에서 상속해서는 안됩니다.파생 클래스의 소멸자가 호출되어야 할 때 호출되지 않는 것과 관련이 있으며 할당되지 않은 메모리로 끝날 수 있습니다.

즉, 파생 된 유형에 더 이상 데이터를 추가하지 않기 때문에 위의 인스턴스에서 ***** 아마도 ***** 벗어날 수 있습니다.이것은 보증이 아닙니다.나는 여전히 그렇게하지 라고 조언합니다. 할 수있다 는 사실이 해야 한다는 의미는 아닙니다.

편집 : 예, 이것은 ShaChris23의 게시물에 대한 답변입니다.아래가 아닌 메시지 위에 표시 되었기 때문에 놓친 것 같습니다.

때로는 필요한 모든 유형에 대해 템플릿 화되지 않은 typedef를 명시 적으로 작성할 수 있습니다.기본 클래스가 typedef되기를 원하는 유형이 하나 뿐인 여러 템플릿 인수에 템플릿 화 된 경우 상속 된 클래스 이름에 효과적으로 포함 된 typedef를 사용하여 특수 클래스를 상속 할 수 있습니다.이 접근 방식은 메타 함수 접근 방식보다 덜 난해합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top