首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Test:接受向量作为参数的操作

Google Test:接受向量作为参数的操作
EN

Stack Overflow用户
提问于 2019-02-05 19:21:24
回答 1查看 264关注 0票数 0

我在下面定义了一个GoogleTest操作。

代码语言:javascript
复制
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中的前四个值(即abcd)是数字。然而,第五个是uint8_tvector

上面的赋值能正常工作吗?我是不是错过了什么。由于Action是宏驱动,如何确保类型安全。

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 10:08:55

您的意思是response->DataV3.e和动作参数ee都是vector<uint8_t>类型吗

如果是这样的话,赋值工作正常。它将以您想要的方式工作(深度复制vector的赋值操作符的性质)。

一个令人担忧的问题是,gmock在内部为操作构建了一些数据结构,这会导致多次复制构造。对于大的向量来说,这可能是一个巨大的开销。如果你想避免那些不需要的副本,你可能需要使用引用包装(例如使用std::ref)或将其作为指针传递。然后,当你真正分配它的时候,只复制一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54533283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档