我有:
class node
{
public:
node* left;
node* right;
int key;
}
class BST
{
public:
void add(int newKey);
private:
node* root;
node* addHelper(node* nd, int newKey);
};
然后我在bst.cpp文件中实现add和addHelper函数:
#include "BST.h"
public void add(int newKey){
addHelper(root,newKey);
}
node* BST :: addHelper(Node* nd, int newKey)
{
//do something..
}
我还需要将public add(int newKey)
函数定义为:
bst.cpp中的void BST :: add(int newKey)
?
答案 0 :(得分:1)
是的,因为您需要指定您定义的函数add
是BST
的成员,而不是名为add
的免费函数。
在以下示例中,两个函数是分开的,即使它们具有相同的名称:
void add(int newKey)
{
// Code to define free function named `add`
// - this function is not a member of any class
}
void BST::add(int newKey)
{
// Code to define function named `add` which is member of class `BST`
}
答案 1 :(得分:1)
您的add
函数应定义为:
void BST::add(int newKey){
addHelper(root,newKey);
}
只有在类定义中才需要访问说明符。此处需要范围解析运算符来确认这与add()
所属的BST
相同。