c++11 - 如何使用 gmock 模拟基于范围的运算符?
问题描述
我有一个继承自 std::map 的类
class LeMap : public std::map<int,int>
{
...
};
我有另一个类应该循环它的元素:
class LeMapUser {
LeMap mMap;
public:
void printElements()
{
for( auto& element : mMap ) { whatever(element); }
}
private:
void whatever(int element){ ... }
};
是否可以模拟LeMap
以便whatever
使用 gmock 进行测试?简而言之:我应该重载哪个运算符来执行循环?
解决方案
AFAIK 基于范围的for
循环需要mMap
对象具有begin()
返回迭代器的成员。迭代器需要有一个后增量运算符才能沿着范围走。此外,mMap
必须有一个end()
成员,返回一个与迭代器相当的值(但不一定是迭代器本身)。
推荐阅读
- excel - 使用 VBA 和 Excel 在 Outlook 中打开 FileDialog SaveAs 时出错
- google-chrome-extension - chrome.tabCapture 到 VLC
- excel - 带有循环的 if 语句 - 大型数据集
- python - 为什么我的熊猫数据框选择的形状是错误的
- javascript - 在 Javascript 中将对象 Promise 转换为字符串
- swift - 在不同形状的金属纹理之间复制数据
- typo3 - 从其他扩展调用 tx_blog viewhelper
- java - 在 Drools 中,如何检查列表是否不包含具有特定值的对象?
- excel - 创建一个使用多个因素更新为新值的单元格
- c# - 实体框架核心:列名无效