BinaryNode和oldNode未在此作用域中声明

BinaryNode and oldNode was not declared in this scope

本文关键字:作用域 声明 oldNode BinaryNode      更新时间:2023-10-16

在我的.h文件中,我有:

class BST
{
private:
    struct BinaryNode
    {
        //variables
    };
    ...
public:
    ...
}

当我尝试使用结构BinaryNode时,例如在.cpp文件中:

int BST::height(BinaryNode *t)
{
    ...
}

我得到BinaryNode was not declared in this scope 的错误

在.cpp中的另一个函数中,我有:

int BST::remove(const DataType &x, BinaryNode *&t)
{
    ...
    else
    {
        BinaryNode *oldNode = t;
        delete oldNode;
    }
}

这给了我BinaryNode *oldNode = t上的错误,即oldNode没有在此范围内声明。我曾尝试在函数的开头将其声明为BinaryNode *oldNode;,但这也不起作用。我的印象是,我现在所做的也被称为声明它,因为它在同一个函数中,所以它是在该范围内声明的。

如有任何帮助,我们将不胜感激。

BinaryNode包含在封闭类的命名空间中。这样做:

int BST::height(BST::BinaryNode *t)

你也可以试试这个:

using  BST::BinaryNode

在CPP文件的顶部,尽管我不确定"使用"支持的通用性。