C++ BinaryNode和oldNode未在此作用域中声明
在我的.h文件中,我有: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
class BST
{
private:
struct BinaryNode
{
//variables
};
...
public:
...
}
当我尝试使用structBinaryNode
时,例如在.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)代码>是,您还需要在返回类型上使用它。