我在下面定义了一个GoogleTest操作。
ACTION_P5(ReadAction, aa, bb, cc, dd, ee) {
shared_ptr<DataResponse> response = move(DataResponse::Create());
response->DataV3.a = aa;
response->DataV3.b = bb;
response->DataV3.c = cc;
response->DataV3.d = dd;
response->DataV3.e = ee;
return response;
}当消息被发送到接口时,将调用此函数。结构response中的前四个值(即a、b、c、d)是数字。然而,第五个是uint8_t的vector。
上面的赋值能正常工作吗?我是不是错过了什么。由于Action是宏驱动,如何确保类型安全。
发布于 2019-02-07 10:08:55
您的意思是response->DataV3.e和动作参数ee都是vector<uint8_t>类型吗
如果是这样的话,赋值工作正常。它将以您想要的方式工作(深度复制vector的赋值操作符的性质)。
一个令人担忧的问题是,gmock在内部为操作构建了一些数据结构,这会导致多次复制构造。对于大的向量来说,这可能是一个巨大的开销。如果你想避免那些不需要的副本,你可能需要使用引用包装(例如使用std::ref)或将其作为指针传递。然后,当你真正分配它的时候,只复制一次。
https://stackoverflow.com/questions/54533283
复制相似问题