有什么好的方法可以避免const_cast
下面,同时保持 const 正确性?
Without const_cast
下面的代码无法编译。set::find
获取对集合键类型的 const 引用,因此在我们的例子中,它保证不会更改传入的指针值;然而,它不能保证不改变指针指向的内容。
class C {
public:
std::set<int*> m_set;
bool isPtrInSet(const int* ptr) const
{
return m_set.find(const_cast<int*>(ptr)) != m_set.end();
}
};
Yes.
在 C++14 中,您可以使用自己的比较器来声明int const*
as 透明的。这将使模板过载 of find()
可以将键与任意类型进行比较。看这个相关那么问题。这是乔纳森·韦克利的解释.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)