我一直收到语法错误
"error: expected ';' before "a""
就行了
AVL_Tree<val_type>::node_type a;
在Netbeans下使用Cygwin gcc编译器。
在“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是公共的。语法错误对于确定究竟发生了什么并不是很有帮助。任何帮助都会受到极大的重视。
答案 0 :(得分:2)
您需要使用typename
,因为node_type
是一种依赖类型。此外,node_type
位于AVLNode
内:
typename AVL_Tree<val_type>::AVLNode::node_type a;