创建一个模板化的嵌套类cpp

时间:2014-05-06 16:13:53

标签: c++ templates nested

有很多类似的帖子,但似乎都没有回答我的问题。 我有一个模板化的类(AvlTree),我想在它下面创建一个嵌套类AvlTree :: Node。

因为嵌套类很重,所以我想在一个单独的文件中定义和实现它。但不知何故,它似​​乎不起作用,并且抛出了一些错误,主要是:

错误C2039:'节点':不是'AvlTree'的成员

我已经添加了两个* .h文件。也许你可以帮助我理解这个问题:

AvlTree.h

#ifndef AVL_TREE_H_
#define AVL_TREE_H_

#include <cstdlib>

template<class Key, class Value>
class AvlTree
{
public:
AvlTree();
~AvlTree();

int insert(Key * key, Value * value);
Value * remove(Key * key);
Value * find(Key * key);
void print();
int clear();

int getHeight();
bool isEmpty() { return _root == NULL; }

private:
class Node<Key, Value>;

typename Node<Key, Value> * _root;
int _height;
};

#endif /* AVL_TREE_H_ */

AvlTreeNode.h

#ifndef AVL_TREE_NODE_H_
#define AVL_TREE_NODE_H_

#include "AvlTree.h"

template<class Key, class Value>
class AvlTree<Key,Value>::Node
{
public:
Node(Key * key, Value * value);
~Node();

int insert(Key * key, Value * value);
Value * remove(Key * key);
Value * find(Key * key);
void print();
int clear();

Value * getValue()      { return _value;    }
int     getHeight()     { return _height;   }
int     getBalance()    { return _balance;  }

private:
Key *   _key;
Value * _value;
Node *  _left;
Node *  _right;
Node *  _parent;
int     _height;
int     _balance;

void rotateLeft();
void rotateRight();
void rotateLeftRight();
void rotateRightLeft();
};

#endif /* AVL_TREE_NODE_H_ */

我知道有一些代码完全不相关,但我相信整个画面总是好一点。

感谢您的帮助!

0 个答案:

没有答案