class A
{
 int x;
public:
 void InitX( void ) { x = 0; }
}

というクラスAを,
void func( const A& r ) { r.InitX(); }
と引数で constの参照で取るとA::InitX()が const の関数でないので
エラーになるじゃないですか。この引数を、"const A& r" → "A& r"と変更することなしに
対処する方法はないですか? あくまでも func()が直接 class Aを書き換えるわけではないので
納得いかないんですが。