【发布时间】:2019-03-15 10:28:47
【问题描述】:
假设我有:
class A {
public:
operator ==(int int_val) { return (m_int_val == int_val); }
private:
int m_int_val;
};
我可以这样做:
bool my_func(const A &a) { return (a == 42); }
甚至:
bool my_func(const A *a) { return ((*a) == 42); }
到目前为止一切顺利。但假设我有:
std::list<A *> a_list;
我想做类似的事情:
auto it = std::find(a_list.begin(), a_list.end(), 42);
然后编译器会抱怨,因为您无法将指向 A 的指针与整数进行比较。
我的问题不是如何用std::find_if 解决这个问题(只是为了抢先你们所有人)。我的问题是我可以为指向 A 的指针定义一个等价运算符,这样上面的 std::find 操作就可以工作了吗?如果可以,如何?
我在寻求更好地理解 C++ 时提出这个问题。
【问题讨论】:
标签: c++