我不断收到语法错误

"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_typeAVLNode内部:

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

07-24 09:46