2013-03-11 31 views
1

我試圖創建一個從模板類返回類定義結構的函數。 g ++給出錯誤信息error: expected constructor, destructor, or type conversion before ‘*’ token。下面是相關代碼:使用模板類返回類成員結構

從BSTDict.cpp:

Node*& BSTDict<T, Compare>::add_helper(Node*& r, T key) { ... } 

從BSTDict.hpp:

struct Node { 
    T key; 
    T data; 
    Node* left; 
    Node* right; 
}; 

... 

Node*& add_helper(Node*& r, T key); 

我已經做了很多測試,我認爲問題在於節點(不管參考和指針)。我也試過BSTDict<T, Compare>::Node*& BSTDict<T, Compare>::add_helper(Node*& r, T key) { ... }。任何幫助,將不勝感激。謝謝。

編輯:這裏有BSTDict.hppBSTDict.cpp。它們是更大程序的一部分。

+1

有沒有像「模板類」這樣的事情;它被稱爲「類模板」。 – Griwes 2013-03-11 23:57:11

+0

而'成員結構'是'嵌套類型' – sehe 2013-03-11 23:57:38

+0

謝謝你們,我知道我會弄錯術語。 – MasterMic 2013-03-12 01:38:02

回答

2
template <typename T, typename Compare> 
    typename BSTDict<T, Compare>::Node*& 
    BSTDict<T, Compare>::add_helper(Node*& r, T key) 
    { 
     // ... 
    } 

我不確定在那裏需要/*typename*/。我必須看到更多的代碼(我必須已經編制template<>限定符msyefl :))

+0

謝謝sehe,添加(uncommented)'typename'做到了!無論如何,我已經更新了我的文章鏈接到完整文件。 – MasterMic 2013-03-12 01:36:06