1

このコードを実行しようとすると

template <typename Item, typename Key>
Item* BST<Item,Key>::search(const Key& key) const {
    for (std::size_t i = 0; i < tree.size(); ++i) {
                Item* ptr = NULL;
        if(tree[i].data == key && tree[i].occupied == true) {
            ptr = tree[i].data;
            return ptr;
        }
    }
    return ptr;
}

タイトルに記載されているエラーで終わります。何度も修正しようとしましたが、何が間違っているのかわかりません。一部の背景情報として、tree はノードのベクトルです。各ノードには、占有されているかどうかを示すブール変数と、データと呼ばれるアイテム変数があります。関数は、指定されたキーを持つノードのベクトルを検索し、そのデータへのポインターを返すことになっていますが、私の人生ではそれを理解できません。

4

1 に答える 1

4

tree[i].dataisconst intと notのタイプのように見えint*ます。コードはそのアドレスをに格納し、場合によってはptr返す必要がありますconst Item*。さらに良いことに、ノードを指すイテレーターを返すか、ノードが見つからない場合はシーケンスの終わりのイテレーターを返します。

于 2012-11-27T16:08:47.947 に答える