我正在使用模板類型爲鍵,數據和比較函數製作BST類。我有一個函數創建新的節點並返回一個指向其他函數的指針。問題是,使用模板時返回類型無效。我創建了以前沒有模板的樹,並返回一個類型節點*不是問題。我不確定幕後發生的事情是否使模板版本無效。 我得到的錯誤包括:模板並返回一個節點*
面目全非模板聲明/定義
語法錯誤:缺少「;」之前'*'
缺少類型說明符 - int假定。注意:C++不支持默認int
我的類模板,節點結構和節點創建功能如下:
template <typename KEY, typename VALUE, bool (*COMPARE)(KEY, KEY)>
class BSTROOT {
private:
struct Node {
KEY key;
VALUE value;
Node *left = nullptr;
Node *right = nullptr;
};
Node* createNode(const KEY& key, const VALUE& value);
template <typename KEY, typename VALUE, bool(*COMPARE)(KEY, KEY)> Node* BSTROOT<KEY, VALUE, COMPARE>::createNode(const KEY& key, const VALUE& value) {
Node *temp = new Node;
temp->key = key;
temp->value = value;
return temp;
}
任何提示或信息,將不勝感激。
你關閉與'}類定義;'? – Cornstalks
請提供一個[最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve) – klutt
我所有的{}都很好,我沒有直接複製所有代碼的粘貼我認爲相關的位。我想我不應該把大量的代碼轉儲到頁面上。我第一次在這裏問一個問題,所以原諒我,如果我不這樣做通常預期 – odoylerules