2016-02-05 45 views
0

我正在實現與this one幾乎相同的二進制樹類。但是,在我的任務中,node結構必須是模板結構。因此,我改變了struct node到:類屬性包含模板類的實例(錯誤C3857)

template <typename T> 
class node { 
public: 
    T data; 
    node<T> *left, *right; 
} 

到目前爲止好,直到我添加了一個node實例btree作爲成員變量:

class btree { 
    // ...... 
private: 
    template <typename T> 
    node<T> *root = NULL; // error 
} 

錯誤消息指出

C3857:多模板參數列表是不允許的。

我試圖將root = NULL移動到btree的默認構造函數,也不起作用。

回答

2

您不能有模板變量聲明。沒有辦法指定變量使用的類型。您可以讓btree模板,並使用該類型的node

template<typename T> 
class btree { 
    // ...... 
private: 
    node<T> *root = NULL; // error 
} 

或指定在btree

class btree { 
    // ...... 
private: 
    node<some_type> *root = NULL; // error 
} 
想要什麼類型的節點