假设你有一组指针(没错...):
std::set<SomeType*> myTypeContainer;
现在假设你想要在一个SomeType类的const方法中搜索这个集合:
bool SomeType::IsContainered() const
{
return myTypeContainer.find(this) != myTypeContainer.end();
}
这样行不通。在该方法中,this
指针是 const SomeType *const
类型的,我无法将其放入 find
中。问题在于 find
接受 const 引用,在这种情况下意味着传递的指针被视为 const,但它指向的对象不是。
有没有一种方法可以平滑解决这个问题(而不改变 set 模板类型)?
std::set<SomeType*,std::less<>>
。 - Arne Vogel