如果我使用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));
}
答案 0 :(得分:3)
尝试修改最初声明为const
的变量时的行为是未定义。
唯一真正安全的方法是获取const
变量的值副本,并将其 - 或指向该变量的指针 - 传递到非const
函数中。该功能所做的任何修改都将在呼叫站点被丢弃。
答案 1 :(得分:0)
如果&#34;方法&#34;只应修改&#34; Class&#34;中的一个或几个成员变量,一种替代方法是声明那些成员可变,然后定义一个&#34; Method2&#34;这被声明为const,但它仍然可以修改mutable。