C++ ImplicitCast_uu返回指向std::指针列表的指针时出错
所以我有一个小问题。我有一个班级,我试图模仿,但我得到了一个错误。所讨论的方法是返回一个指向std::对象指针列表的指针。下面是一些复制问题的代码:C++ ImplicitCast_uu返回指向std::指针列表的指针时出错,c++,gmock,C++,Gmock,所以我有一个小问题。我有一个班级,我试图模仿,但我得到了一个错误。所讨论的方法是返回一个指向std::对象指针列表的指针。下面是一些复制问题的代码: #include <ByteBuffer.h> . . . class Foo { public: std::list<ByteBuffer*>* getStuff() { return new std::list<ByteBuffer*>(); } }; class MockFoo : public
#include <ByteBuffer.h>
. . .
class Foo {
public:
std::list<ByteBuffer*>* getStuff() { return new std::list<ByteBuffer*>(); }
};
class MockFoo : public Foo {
public:
MOCK_METHOD0(getStuff, std::list<ByteBuffer>*());
};
TEST_F(FooTest, shouldDoStuff) {
MockFoo* mfoo = new MockFoo();
std::list<ByteBuffer*>* plist = new std::list<ByteBuffer*>();
EXPECT_CALL(*mfoo, getStuff()).WillOnce(Return(plist));
}
#包括
. . .
福班{
公众:
std::list*getStuff(){返回新的std::list();}
};
MockFoo类:公共Foo{
公众:
MOCK_方法0(getStuff,std::list*());
};
测试F(最足部,应为凝灰岩){
MockFoo*mfoo=新MockFoo();
std::list*plist=new std::list();
EXPECT_调用(*mfoo,getStuff()).WillOnce(Return(plist));
}
当我编译此文件时,会出现以下错误:
/usr/local/include/gmock/gmock-actions.h:491: error: no matching function for call to ‘ImplicitCast_(std::list<zios::common::ByteBuffer*, std::allocator<zios::common::ByteBuffer*> >*&)’
make: *** [Debug/FooTest.o] Error 1
/usr/local/include/gmock/gmock actions.h:491:错误:调用'ImplicitCast(std::list*&')没有匹配的函数
make:**[Debug/FooTest.o]错误1
有人能告诉我是什么引起的吗?我做错了什么?这看起来不对:
MOCK_METHOD0(getStuff, std::list<ByteBuffer>*());
MOCK_方法0(getStuff,std::list*());
应该是:
MOCK_METHOD0(getStuff, std::list<ByteBuffer*>*());
MOCK_方法0(getStuff,std::list*());
应该是相对于使用中的编码标准,我不建议在std::list
…中使用非包装指针。这看起来是错误的:
MOCK_METHOD0(getStuff, std::list<ByteBuffer>*());
MOCK_方法0(getStuff,std::list*());
应该是:
MOCK_METHOD0(getStuff, std::list<ByteBuffer*>*());
MOCK_方法0(getStuff,std::list*());
应该是相对于使用中的编码标准,我不建议在std::list
…中使用非包装指针。这看起来是错误的:
MOCK_METHOD0(getStuff, std::list<ByteBuffer>*());
MOCK_方法0(getStuff,std::list*());
应该是:
MOCK_METHOD0(getStuff, std::list<ByteBuffer*>*());
MOCK_方法0(getStuff,std::list*());
应该是相对于使用中的编码标准,我不建议在std::list
…中使用非包装指针。这看起来是错误的:
MOCK_METHOD0(getStuff, std::list<ByteBuffer>*());
MOCK_方法0(getStuff,std::list*());
应该是:
MOCK_METHOD0(getStuff, std::list<ByteBuffer*>*());
MOCK_方法0(getStuff,std::list*());
应该是相对于使用中的编码标准,我不建议在
std::list
..中使用非包装指针,因为我记得,在googlemock中,您只能模拟虚拟方法。
因此,类“Foo”中的方法“getStuff()”应该是虚拟的。据我所知,在googlemock中,只能模拟虚拟方法。
因此,类“Foo”中的方法“getStuff()”应该是虚拟的。据我所知,在googlemock中,只能模拟虚拟方法。
因此,类“Foo”中的方法“getStuff()”应该是虚拟的。据我所知,在googlemock中,只能模拟虚拟方法。
因此,类“Foo”中的方法“getStuff()”应该是虚拟的。两者都正确。然而,我的真实代码中的问题仍然存在。我以为我在这里复制了它,但显然没有。:(谢谢!@user1143970请复制粘贴你的“真实”代码…尝试重新创建未经测试的样本是不会起作用的。如果你必须这样做,请粘贴敏感的部分。都是对的。但是我真实代码中的问题仍然存在。我以为我在这里复制了它,但显然没有。:(谢谢!@user1143970请复制粘贴您的“真实”代码…尝试重新创建未经测试的样本是不会起作用的。如果必须,请粘贴敏感的部分。两者都正确。但是我真实代码中的问题仍然存在。我以为我在这里复制了它,但显然没有。:(谢谢!@user1143970请复制粘贴您的“真实”代码…尝试重新创建未经测试的示例是不起作用的。如果必须,请粘贴敏感的部分。两者都正确。但是我的真实代码中的问题仍然存在。我以为我在这里复制了它,但显然没有。:(谢谢!@user1143970请复制粘贴你的“真实”代码…试图重新创建一个未经测试的样本是行不通的。如果你必须这样做,那么就把敏感的部分去掉。