首页 > 解决方案 > 在基类中声明的 C++ 结构在子类中不可访问

问题描述

我希望你能帮帮我,我已经搜索了论坛,但我没有找到类似的东西。

我写了这两个类:

//AbstrTree.h
#ifndef TREE_ABSTRTREE_H
#define TREE_ABSTRTREE_H

#include <iostream>

using namespace std;

template <class T>
class AbstrTree
{
protected:
    struct node
    {
        T label;
        node *left, *right;
        node(T info)
        {
            label = info;
            left = right = NULL;
        }
    };
    node *root;

    virtual void deleteNode(T, node *&) = 0;
    virtual node* findNode(T, node*);
    void preOrder(node *);
    void inOrder(node *);
    void postOrder(node *);
    virtual void delTree(node *&);
    virtual void printTree(node *) = 0;
    bool createNode(T, node *&);

public:
    AbstrTree() { root = NULL; };
    virtual ~AbstrTree() { delTree(root); };
    virtual int insert(T,T) = 0;
    bool find(T);
    void removeNode(T);
    virtual void pre();
    virtual void post();
    virtual void in();
    void print();
};
#endif

//BinTree.h
#ifndef TREE_BINTREE_H
#define TREE_BINTREE_H

#include "AbstrTree.h"

template <class T>
class BinTree : public AbstrTree<T>
{
    protected:
        virtual void deleteNode(T,  node*&);
        virtual void printTree(node*);
    public:
        BinTree();
        ~BinTree();

        virtual bool insert(T, T);
        bool insert(T, T,char);
};

#endif

问题是,在 BinTree 子类中,我在 AbstrTree 中声明的“节点”结构是未定义的。

Clion 正是这样说的:

Unknown type name 'node'

谁能明白为什么?

标签: c++classoopinheritance

解决方案


推荐阅读