2016-12-01 118 views
0

我有一个模板类,例如继承的类是否继承嵌套的类?

template<class T,class Key> 
    class BinaryTree:{ 
    public: 
    class node {}; 
    } 

,现在我想从类继承,例如:

class AVLTree : public Binary Tree 

我被卡住的问题是这些功能我想在AVLTree中实现不识别节点。例如,让功能更

void rotateLL(node* n) 

编译器说:

node has not been declared 

我怎样才能解决这个问题?

+0

对不起,我第一次问这里。我编辑了这个问题。 –

+0

你错过了很重要的细节。 AVLTree也是模板类吗? – AnT

回答

0

node是什么叫做依赖的名字,因为它的基类,它依赖于模板参数的成员。您需要:

template <class T, class Key> 
class AVLTree : public BinaryTree<T, Key> { 
public: 
    void rotateLL(typename AVLTree::node *n); 
}; 
+0

你是一个拯救生命的人! –

0

很难猜出您遇到的情况 - 您的问题中的代码有很多错别字,因此无法猜测您真正使用的代码的样子。

尽管如此,你显然想要完成的基本想法可以正常工作。例如,下面的编译没有问题:

template<class T, class Key> 
class BinaryTree { 
public: 
    class Node {}; 
}; 

template <class T, class Key> 
class AVLTree : public BinaryTree<T, Key> { 
public: 
    void rotateLL(typename BinaryTree<T, Key>::Node *n); 
    // or: void rotateLL(typename AVLTree::Node *n); 
}; 
+0

不,它不:http://coliru.stacked-crooked.com/a/621e32915451f7ab – aschepler

+0

@aschepler:糟糕 - 很正确。 (让我信任VC++)。 –