2013-12-20 2 views
1

이 코드를 작성했지만 작동하지 않습니다! 템플릿 클래스와 함께 typedef 사용

그 것이다 C++에서 동적 스택 노드의 구현 :

template <class E> 

class Record{ 

public: 

    E elem; 

    Record<E> *prec; 
}; 


typedef Record<E> *P; <- error! 

제가 어떤 솔루션을 해결할 수 있는가? 감사

+0

을 당신은 당신이 컴파일러 오류가 의미? 오류가 무엇입니까? – BoBTFish

+4

'E'를 실제 유형으로 바꿔야합니다. 예를 들어'typedef Record * P;' – juanchopanza

+0

@ juanchopanza .... 왜 대답 부분에 쓰지 않았습니까? – Michael

답변

5
typedef Record<E> *P; <- error! 

당신은이 C++ 03과 같은 "템플릿 형식 정의"를 할 수 없습니다. E을 콘크리트 유형으로 바꿔야합니다. C++ 11에서

, 당신이 그렇게처럼 using 별칭을 사용할 수 있습니다

template <typename E> 
using P = Record<E>*; 

P<int> p; 
P<float> q; 
+0

+1은 단순하고 철저한 예제로 매우 잘 표현되었습니다. – qrikko

+0

+1하지만 VC++ 컴파일러는 여전히 템플릿 별명 afaik를 지원하지 않습니다. – Hulk

+0

감사합니다. 이제 작동합니다! – Alastor100

관련 문제