Итак, у меня есть эта небольшая проблема. У меня есть класс, который я пытаюсь высмеять, но я получаю сообщение об ошибке. Этот метод возвращает указатель на std :: list указателей объектов. Ниже приведен код, который воспроизводит проблему:Ошибка ImplicitCast_ при возврате указателя на 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));
}
Когда я компилирую это, я получаю следующее сообщение об ошибке:
/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
Может кто-нибудь сказать мне, что причиной этого? Что я делаю не так?
Оба права. Однако проблема в моем реальном коде еще сохраняется. Я думал, что я дублировал его здесь, но, очевидно, нет. :(Спасибо! – DaveR
@ user1143970 Скопируйте в свой «настоящий» код ... Он никогда не работает, пытаясь воссоздать непроверенный образец. Если вам нужно тогда *** splat *** части, которые являются чувствительными. –