単純な AVL ツリーを作成していますが、GCC から次のコンパイラ エラーが発生します。
エラー: '*' トークンの前にコンストラクタ、デストラクタ、または型変換が必要です
実装ファイルの最小関数宣言と最大関数宣言の両方でエラーが発生します。
次の 2 つのメンバー関数が問題になっています。
template <typename T>
tree_t<T>::node_t* tree_t<T>::min(node_t* t) const
{
node_t *temp = t;
while(temp->left != NULL)
{
temp = temp->left;
}
return temp;
}
template <typename T>
tree_t<T>::node_t* tree_t<T>::min(tree_t<T>::node_t*) const
{
node_t *temp = t;
while(temp->left != NULL)
{
temp = temp->left;
}
return temp;
}
宣言は次のとおりです。
node_t* min(node_t* t) const;
node_t* max(node_t* ) const;
クラスと node_t 構造体の宣言は次のとおりです。
template <typename T>
class tree_t
{
private:
struct node_t
{
T data;
node_t *left;
node_t *right;
int height;
int bal;
node_t(const T& Element, node_t *lt, node_t *rt, int h = 0)
: data(Element), left(lt), right(rt), height(h) {};
};
node_t * root;