0

我不断收到语法错误

“错误:预期';' 在“一个”之前

就行了 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 是公共的。语法错误对于说明到底发生了什么并没有多大帮助。非常感谢任何帮助。

4

1 回答 1

2

您需要使用typename因为node_type是依赖类型。另外,node_type在里面AVLNode

typename AVL_Tree<val_type>::AVLNode::node_type a;
于 2012-05-01T00:13:33.203 回答