继承的类是否继承了嵌套类?

时间:2016-12-01 18:12:19

标签: c++ class inheritance nested

我有一个模板类,例如

if (System.IO.Directory.Exists(dirName))
{
    string filePath = System.IO.Path.Combine(dirName, fileName);

    if (System.IO.File.Exists(filePath))
    {
        System.IO.File.Delete(filePath);
    }

    else
    {
        MessageBox.Show("Invalid Directory or File Name");
    }
}

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

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

我遇到的问题是我想在AVLTree中实现的功能无法识别节点。例如,让函数为

class AVLTree : public Binary Tree 

编译器说:

void rotateLL(node* n)

我该如何解决这个问题?

2 个答案:

答案 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);
};

答案 1 :(得分:0)

node是所谓的从属名称,因为它是基类的成员,它依赖于模板参数。你需要:

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