我不断收到语法错误
"error: expected ';' before "a""
on the lineAVL_Tree<val_type>::node_type a;
using the Cygwin gcc compiler under Netbeans.
in class "MyMap.h"
#include "AVL_Tree.h"
template <class key_type,class mapped_type>
class MyMap
{
public:
class iterator
{
private:
AVL_Tree<val_type>::node_type a;
};
};
在文件“ AVL_Tree.h”中
template <class T>
class AVL_Tree
{
public:
struct AVLNode
{
int balanceFactor;
T element;
AVLNode * left;
AVLNode * right;
AVLNode(T key)
{
left = 0;
right = 0;
element = key;
balanceFactor = 0;
}
typedef AVLNode * node_type;
};
我的印象是,我能够使用范围运算符访问“ node_type”,因为AVL_Tree中的typedef是公共的。语法错误在告诉实际情况方面不是很有帮助。非常感谢任何帮助。
最佳答案
您需要使用typename
,因为node_type
是从属类型。另外,node_type
在AVLNode
内部:
typename AVL_Tree<val_type>::AVLNode::node_type a;