-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、 のメンバーである関数を定義していることを指定する必要があるためです。BSTadd

次の例では、2 つの関数は同じ名前ですが、別のものです。

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); 

}

アクセス指定子は、クラス定義でのみ必要です。add()そして、これが が属するものと同じであることを伝えるために、ここでスコープ解決演算子が必要ですBST

于 2013-10-28T16:27:30.267 に答える