我正在尝试从向量中删除一个元素。

vector<Foo> vecFoo;

Foo f1;
Foo f2;
Foo f3;

vecFoo.push_back(f1);
vecFoo.push_back(f2);
vecFoo.push_back(f3);

Foo* pF1 = &f1;

vecFoo.erase(std::remove(vecFoo.begin(), vecFoo.end(), *pF1), vecFoo.end());


最后一行会产生大量的C2784错误。我究竟做错了什么?

(是的,这个示例有些人为,但是本质是我已经有了指向向量中元素的指针,并且我想删除该元素。)

最佳答案

您是否缺少比较运算符?

class Foo
{
    public:
        bool operator==(Foo const& rhs) const { return true;}

        ... Other stuff
};

07-28 08:10