2013-12-20 50 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