在一个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_; };