2

リンクリストを実装するクラスがあります。このクラスには、リンクされたリストに値が存在する場合に値を見つける find() メソッドがあります。ノードを追加する別のメソッド add() がありますが、そのノードに含まれるその値がリストにまだ存在しない場合のみです。

したがって、 add() 関数でやりたいことは、既存の値をテストする代わりに find メソッドを使用することです。私の質問は、そのクラスの別のメソッド内から find メソッドを呼び出すにはどうすればよいですか?

this.find(x) を呼び出してみました

しかし、それは私にエラーを与えました。

私のコードの一部は次のようになります。

// main function
  SLList<int>list;
  list.add(20);
  list.add(14);

// SLList.h (interface and implementation)

template<typename T>
bool SLList<T>::find(const T& val) const {
  // finds value
}


template<typename T>
void SLList<T>::add(const T& x) {
  bool found = this.find(x);
  if (found) return false;

  // goes on to add a node in the Singly Linked list (SLList)
}

だから私が言ったように、私はそのクラスの別のメソッド内からfindメソッドを呼び出せるようにしたいと思っていました.私が言ったように、これは私にたくさんのエラーを与えます。

誰でも私がこれを呼び出す方法を手伝ってくれます、ありがとう!

4

2 に答える 2

4

電話するだけfind(x)です。いいえ、これは必要ありません。また、this現在のオブジェクトへのポインターです。だからあなたはしなければならないでしょうthis->find(x)

于 2011-04-19T01:50:11.567 に答える
1

thisはポインタです。使用する場合は、次のいずれかの方法で使用する必要があります。

this->find(x);
(*this).find(x);
find(x);

ちなみに、関数は(not )SLList<T>::add(const T& x)を返す必要があります。boolvoid

于 2011-04-19T02:00:51.433 に答える