我有一个模板类,例如
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)
我该如何解决这个问题?
答案 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);
};