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