-1

在 BST.h 文件中我有:

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)函数定义为: void BST :: add(int newKey)在 bst.cpp 中吗?

4

2 回答 2

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`
}
于 2013-10-28T16:26:50.547 回答
1

您的add功能应定义为:

void BST::add(int newKey){

   addHelper(root,newKey); 

}

访问说明符仅在类定义中是必需的。并且这里需要范围解析操作符来判断 this 与add()属于相同BST

于 2013-10-28T16:27:30.267 回答