0

私は現在、から派生したC++コースのセットクラスに取り組んでいvector<T>ます。

index()ある時点で、これらのセット内のオブジェクトのインデックスを (セットに含まれている場合) 明らかに返す関数を実装する必要があるところまで来ました。index()クラス全体を書いているときに、これらのメソッドをオーバーロードする必要があるところに来ました。ここに私の 2 種類の方法があります。3 つのパラメーターを使用:

size_t index ( T const& x,size_t const& l, size_t const& r) const
{

    if(l > size()||r>size())
        throw("Menge::index(): index out of range.");

    //cut the interval
    size_t m = (l+r)/2;

    // x was found
    if( x == (*this)[m])
        return m;

    // x can't be found
    if( l==m)
        return NPOS;

    //rekursive part
    if( x < (*this)[m])
        return index(l,m,x);

    return index(m+1,r,x);

}

1つのパラメータを持つ2番目:

bool contains ( T const& elem ) const{
    return index(elem, 0, size()-1)!=NPOS;
}

ポイントは、これら 2 つのメソッドを書きたくないということです。可能であれば、1 つにまとめることができます。メソッドのデフォルト値について考えたindex()ので、メソッドヘッドを次のように記述します。

size_t index (T const& x, size_t const& l=0, size_t const& r=size()-1)const;

エラーが発生しました: Elementfunction can't be called without a object

そのエラーについて考えた後、私はそれを次のように編集しようとしました:

size_t index (T const& x, size_t const& l=0, size_t const& r=this->size()-1)const;

しかし、それは私にエラーを与えました:You're not allowed to call >>this<< in that context.

見逃したかもしれませんが、メソッドをデフォルトのパラメーターとして呼び出すことができるかどうかを誰かが教えてくれるかどうか教えてください。

4

1 に答える 1