将const数据传递到无需const_cast的非const的功能
Pass const data to function taking non-const without const_cast
如果我使用 const_cast
, Method(Xp_T* pParameters)
接受 const Xp_T&
参数类型,但我不想在这里使用const_cast
,并且想要要修改 Method(Xp_T* pParameters)
因此,它接受 const Xp_T&
参数类型。
bool Class::Method(const Parameters& rParameters )
{
rParameters.Method(&m_Xp); // I wouldn't prefer to use const_cast here
return true;
}
基类方法:
template<typename Xp_T>
void Method(Xp_T* pParameters )
{
(*pParameters) = (static_cast< Xp_T&>(*this));
}
试图修改最初声明为 const
的变量的行为是 nes 。。
唯一真正安全的方法是将const
变量的价值副本录制,然后将其传递给您的非const
函数。该功能进行的任何修改将在呼叫站点上丢弃。
如果"方法"仅应修改" class"中的一个或几个成员变量,一个替代方法是声明这些成员 Mutable ,然后定义A声明为const的"方法2",但它仍然能够修改突变物。