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

我最终得到了标题中描述的错误。我已经尝试过多次修复它,但无法弄清楚我做错了什么。对于一些背景信息,树是节点的向量。每个节点都有一个布尔变量说明它是否被占用,还有一个 Item 变量称为数据。该函数应该使用给定的键搜索节点的向量并返回指向其数据的指针,但我一生都无法弄清楚。

4

1 回答 1

4

看起来tree[i].dataisconst int和 not的类型int*。代码应该将其地址存储到ptr并可能返回const Item*。更好的是,如果未找到该节点,则返回一个指向该节点的迭代器或序列结束迭代器。

于 2012-11-27T16:08:47.947 回答