在一个const函数中无法修改类成员的值,通过试用mutable可以改变这种窘况。次关键字在Mock测试中(MockTest)很有用:


class ObMockMergerAsyncRpcStub : public ObMergerAsyncRpcStub
{
  public:
    ObMockMergerAsyncRpcStub()
    { 
      rpc_events_list_.init(1024, rpc_events_, 0);
    }
    virtual ~ObMockMergerAsyncRpcStub(){}
    virtual int scan(const int64_t timeout, const ObServer & server,
        const ObScanParam & scan_param, ObMergerRpcEvent & result) const
    { 
      if(!rpc_events_list_.push_back(&result))
      { 
        TBSYS_LOG(ERROR, "fail to save rpc result");
      }
      else
      { 
        TBSYS_LOG(INFO, "a RPC result save to rpc_event_list_");
      }
      return OB_SUCCESS;
    }

    mutable ObMergerRpcEvent *rpc_events_[1024];
    mutable ObArrayHelper<ObMergerRpcEvent*> rpc_events_list_;
};