填寫一個類的模板,如果我有兩類:從另一個模板類
template <typename T>
struct Node
{
...
};
tempalte <typename T_Node, typename T>
struct NodeIterator
{
T m_value;
};
NodeIterator<Node<int>, int>
我可以從T_Node
推斷模板參數T
無類Node
明確創建這樣一個typedef:
// To make it clear, yes I know this works, but I had to typedef the type
template <typename T>
struct Node
{
typedef T node_type;
...
};
template <typename T_Node>
struct NoteIterator
{
typedef typename T_Node::node_type node_type;
node_type m_value;
};
NodeIterator<Node<int> >
如果沒有,是否有一個原因,我不能這樣做(編譯器已經知道T_Node
和類型T
它參加了)除了「功能只是不存在於C++中「?我這樣問,通常情況下有一個簡單的理由(至少在表面上),就像這樣從語言中遺漏的東西。
你試過了嗎?你得到了什麼錯誤? –
我的句子有點含糊。我提出的解決方案的工作。我想知道是否有解決方案,我不需要鍵入typedef。 – Samaursa
@Samaursa:你在'typedef T_Node :: node_type node_type;'中忘記了'typename'。看我的解決方案。 – Nawaz