尝试模拟纯虚拟课堂
Try to mock pure virtual class
>i' 试图用谷歌模拟来模拟纯虚拟类中的函数。这是我的代码:
class I_Circle
{
private :
public:
virtual ~I_Circle() {}
virtual void GetClone(I_Circle * k) = 0;
};
class Mock_I_Circle : public I_Circle
{
public:
Mock_I_Circle() {}
virtual ~Mock_I_Circle() {};
MOCK_METHOD1(GetClone, void(I_Circle* k));
};
TEST(CircleTest, secondTest) {
NiceMock<Mock_I_Circle> iCircle;
Mock_I_Circle* pICircle = &iCircle;
EXPECT_CALL(iCircle, GetClone(_))
.WillOnce(
SetArgPointee<0>(*pICircle)
);
iCircle.GetClone(pICircle);
Mock::VerifyAndClear(&iCircle);
}
使用此实现,我收到以下错误:
Error C2280 'testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<0,Mock_I_Circle,false>>::PolymorphicAction(const testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<0,Mock_I_Circle,false>> &)': attempting to reference a deleted function MockInterface c:sourcegoogletestgooglemockincludegmockgmock-actions.h 1110
这里的什么功能是要删除td的?问题似乎是由SetArgPointee的EXPECT_CALL引起的,但我不知道它有什么问题。
来自Google Mock Cookbook:
SetArgPointee(( 方便地将值创建内部副本 传递给它,无需将值保持在范围内并处于活动状态。 但是,这意味着该值必须具有复制构造函数 和赋值运算符。
在您的情况下,Mock_I_Circle
类缺少复制构造函数和赋值运算符。 添加这些将修复编译错误。 话虽如此,我不清楚你写的测试的目的。
相关文章:
- 虚拟决赛作为安全
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 如何在C++中获得"静态纯虚拟"功能?
- C++无法定义虚拟函数 OUTER 类和头文件
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 大小虚拟继承中的派生类
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- std::is_trivially_copyable_v 关于虚拟功能
- 删除C++继承中虚拟类成员的代码重复
- 尝试模拟纯虚拟课堂
- 使用虚拟成员从课堂制作 POD
- Cuda虚拟课堂
- 如何在cuda中使用虚拟课堂