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

C++ BinaryNode和oldNode未在此作用域中声明,c++,class,struct,scope,C++,Class,Struct,Scope,在我的.h文件中,我有: class BST { private: struct BinaryNode { //variables }; ... public: ... } 当我尝试使用structBinaryNode时,例如在.cpp文件中: int BST::height(BinaryNode *t) { ... } 我得到的错误是,BinaryNode未在此范围内声明 在my.cpp的另一个函数中,我有: int

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

class BST
{
private:
    struct BinaryNode
    {
        //variables

    };

    ...

public:

    ...

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

int BST::height(BinaryNode *t)
{
    ...
}
我得到的错误是,
BinaryNode未在此范围内声明

在my.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文件的顶部,虽然我不确定对“使用”支持的普遍性。

BST::BinaryNode
有效,但是如果我要有一个返回BinaryNode的函数,我是否必须使用
BST::BinaryNode函数(BST::BinaryNode)是,您还需要在返回类型上使用它。