gmock解决不支持右值引用的问题
来源:互联网 发布:知乎 陈寅恪 成就 编辑:程序博客网 时间:2024/05/29 12:41
因为gmock不支持C++11的右值引用,所以当如下测例出现时,会出现问题,导致连编译都通过不了:
#include <string>#include <gtest/gtest.h>#include <gmock/gmock.h>class A{public: virtual void foo(std::string&&)=0;};class Mock_A: public A{public: MOCK_METHOD1(foo,void(std::string&&));};TEST(RvalueRef, foo){ Mock_A r; { ::testing::InSequence sequence; EXPECT_CALL(r,foo("hello")); } r.foo("hello");}int main(int argc, char* argv[]){ ::testing::InitGoogleMock(&argc,argv); return RUN_ALL_TESTS();}
而解决办法是,利用一个中间函数,巧妙地跳过右值引用的部分:
#include <string>#include <gtest/gtest.h>#include <gmock/gmock.h>class A{public: virtual void foo(std::string&&)=0;};class Mock_A: public A{public: void foo(std::string&& s){foo_rvr(s);} MOCK_METHOD1(foo_rvr, void(std::string));};TEST(RvalueRef, foo){ Mock—_A r; { ::testing::InSequence sequence; EXPECT_CALL(r,foo_rvr("hi")); } std::string hello("hello"); r.foo("hi"); }int main(int argc, char* argv[]){ ::testing::InitGoogleMock(&argc,argv); return RUN_ALL_TESTS();}
借此巧妙地化解gmock不能支持右值引用的问题。
阅读全文
0 0
- gmock解决不支持右值引用的问题
- 返回值和右值引用的传递问题
- C++的右值引用
- c++的右值引用
- C++ - 函数模板(function template)右值引用参数 问题 及 解决
- 深刻理解引用、const引用、右值引用的本质
- C++0x的右值和右值引用
- C++0x的右值和右值引用
- 解决libxml2不支持中文的问题
- 解决libxml2不支持中文的问题
- 关于Hibernate不支持date_add问题的解决
- 解决不支持1440*900分辨率的问题
- 解决IE不支持Data.parse()的问题
- 解决IE6不支持position:fixed的问题
- 解决libxml2不支持中文的问题
- svn不支持中文路径问题的解决
- 解决JSChart画图不支持中文的问题
- 解决IE6不支持position:fixed;的问题
- 照片墙
- C语言的运算符
- ZooKeeper概述(转)
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- 2017 多校训练第二场 HDU 6055 Regular polygon
- gmock解决不支持右值引用的问题
- 自定义线程池
- 20170727mabitas
- java web学习
- 如何自定义分块导出大图
- JAVA中常量使用常量类或者常量接口,还是使用枚举的区别
- HDU 6055 (2017 多校训练赛2 1011)Regular polygon
- Android6.0权限
- codeforces 802K Send the Fool Further! (medium) 树形dp