使用范围解析运算符时的语法错误

时间:2012-05-01 00:08:05

标签: c++ syntax scope operator-keyword nested

我一直收到语法错误

"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是公共的。语法错误对于确定究竟发生了什么并不是很有帮助。任何帮助都会受到极大的重视。

1 个答案:

答案 0 :(得分:2)

您需要使用typename,因为node_type是一种依赖类型。此外,node_type位于AVLNode内:

typename AVL_Tree<val_type>::AVLNode::node_type a;