Gen*_*ent 3 c++ overloading const
我必须使用一个框架,它将一个重要的钩子方法定义为const,就像这样
class FrameworkClass {
  ...
  virtual void OnEventA(unsigned value) const;
  ...
}
在我的派生类中,我必须保存通过钩子获得的值
class MyClass: public FrameworkClass
{
  ...
  virtual void OnEventA(unsigned value) const { savedValue = value; } // error!
private:
  unsigned savedValue;
}
不幸的是我无法改变框架.
有没有一种好方法来绕过钩子方法的常量?
使变量可变:
mutable unsigned savedValue;
mutable是太"宽泛"的解决方法因为影响正确使用const'ness的方法.解决不适当的const'ness有const_cast:
class MyClass: public FrameworkClass
{
  ...
  virtual void OnEventA(unsigned value) const { const_cast<MyClass*>(this)->savedValue = value; } // error!
private:
  unsigned savedValue;
}