gpt4 book ai didi

c++ - 模拟类可以从 googlemock 中的另一个模拟类继承吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:44 24 4
gpt4 key购买 nike

模拟类可以从 googlemock 中的另一个模拟类继承吗?如果是,请帮助我理解为什么这不起作用。

class IA
{
public:
virtual int test1(int a) = 0;
};

class IB : public IA
{
public:
virtual float test2(float b) = 0;
};

class MockA : public IA
{
public:
MOCK_METHOD1(test1, int (int a));
};

class MockB : public MockA, public IB
{
public:
MOCK_METHOD1(test2, float (float b));
};

我得到一个 cannot instantiate abstract class compiler error for MockB 但不是 MockA

最佳答案

如果你打算使用多重继承,你应该使用虚继承。

下一个示例编译和链接正常:

class IA
{
public:
virtual int test1(int a) = 0;
};

class IB : virtual public IA
{
public:
virtual float test2(float b) = 0;
};

class MockA :virtual public IA
{
public:
int test1(int a)
{
return a+1;
}
};

class MockB : public MockA, public IB
{
public:
float test2(float b)
{
return b+0.1;
}
};

int main()
{
MockB b;
(void)b;
}

这只是你的例子的一个小修改

关于c++ - 模拟类可以从 googlemock 中的另一个模拟类继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com