googlemock: объект издеваемого класса не может быть создан

У меня есть класс Car, который использует speedInterface (на него есть ссылка).
Теперь я хочу имитировать speedInterface с помощью Mock_SpeedInterface.

class speedInterface
{
public:
    virtual ~speedInterface() {}

    virtual int GetSpeed(void) = 0;
};

class Mock_SpeedInterface : public speedInterface
{
public:
    MOCK_CONST_METHOD0(GetSpeed, int());
};

class Car 
{
public:
    Car(speedInterface& s) : Speedo(s) {}
    virtual ~Car() {}

    speedInterface& Speedo;
    ...

};
TEST(TestCar, Test1) {
    Mock_SpeedInterface mockSpeed;
...
}  

Попытка создать mockSpeed ​​приводит к следующей ошибке компилятора:

Ошибка C2259 «Mock_SpeedInterface»: невозможно создать экземпляр абстрактного класса

IMHO класс Mock_SpeedInterface не является абстрактным классом, потому что он «реализует» GetSpeed. Почему я получаю эту ошибку и как ее предотвратить?


person M.Herzog    schedule 16.03.2018    source источник
comment
Почему вы использовали MOCK_CONST_METHOD0 для GetSpeed, так как этот метод non-const. Вы должны использовать MOCK_METHOD0.   -  person rafix07    schedule 16.03.2018
comment
Ой. Ты прав. Я этого не видел. Изменение его на MOCK_METHOD0 исправляет это. Большое спасибо.   -  person M.Herzog    schedule 16.03.2018


Ответы (1)


Кажется, MOCK_CONST_METHOD0(GetSpeed, int()); ошибся. Чтобы получить обычный ответ, я процитирую комментарий ОП:

Изменение его на MOCK_METHOD0 исправляет это.

person Ingo    schedule 10.03.2021