Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ImplicitCast_uu返回指向std::指针列表的指针时出错_C++_Gmock - Fatal编程技术网

C++ ImplicitCast_uu返回指向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

所以我有一个小问题。我有一个班级,我试图模仿,但我得到了一个错误。所讨论的方法是返回一个指向std::对象指针列表的指针。下面是一些复制问题的代码:

#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请复制粘贴你的“真实”代码…试图重新创建一个未经测试的样本是行不通的。如果你必须这样做,那么就把敏感的部分去掉。