【问题标题】:attempt to reference a deleted function _ gmock尝试引用已删除的函数_gmock
【发布时间】:2020-09-23 08:26:21
【问题描述】:

我是第一次使用 GMock,我正在使用纯虚拟方法模拟一个类, 我从 Mock 类创建了一个实例

MockInterface mockIntr;

然后我需要将此模拟作为参数传递给另一个函数

func->action(std::make_shared<MockInterface>(mockIntr);

在这种情况下,我得到了错误: “C2280 : MockInterface::MockInterface(const MockInterface&) : 尝试引用已删除的函数”

我不确定解决方案是在 MockInterface 类中创建一个复制构造函数,还是有其他方法可以解决此问题。

【问题讨论】:

  • MockInterface的构造函数定义是什么?,默认的复制构造函数是否标有delete
  • 复制构造函数在基类中被标记为删除(我从中创建了 MockInterface)
  • 然后你必须明确指定一个(它使用基类的可行构造函数)。顺便说一句,从其他类继承接口是不寻常的。

标签: c++ googlemock


【解决方案1】:

您不是在传递 那个 模拟,而是在尝试复制它并传递副本。
make_shared&lt;T&gt;(x) 的意思是“从x 创建一个新的T,我们可以分享”,而不是“让我们分享x”。)

立即创建共享对象:

auto mockIntr = std::make_shared<MockInterface>();
func->action(mockIntr);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2020-05-02
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多