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

class BST
{
private:
    struct BinaryNode
    {
        //variables

    };

    ...

public:

    ...

}


当我尝试使用.cpp文件中的struct BinaryNode时:

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文件的顶部,尽管我不确定是否支持“使用”。

09-20 17:05