2016-03-02 4 views
4

Предположим, что у меня есть этот класс и тип Manager объявлен вперед в Base.h.gmock и forward объявленные классы

#include <Base.h> 

class MockBase : public Base 
{ 
public: 
    MOCK_CONST_METHOD0(manager, const Manager&()); 
    ... 
}; 

Я не собираюсь использовать этот метод в моем тесте, поэтому я не хочу, чтобы включить определение класса Manager, в файл с тестом.

Но я думаю, что во время компиляции gmock пытается подготовить сообщение об ошибке и глубоко в его кишках он принимает адрес переменной менеджера и у меня есть ошибка:

error C2027: use of undefined type 'Manager' \external\googlemock\gtest\include\gtest\gtest-printers.h 146 1

Могу ли я каким-то образом избежать включения файлов с определениями форвардные объявленные типы для методов, которые я не буду использовать?

ответ

0

Я работал над этим, определяя функцию PrintTo, поэтому gtest не будет пытаться использовать свою функцию TypeWithoutFormatter, которая вызывает проблему. Это несчастливо, и я не уверен, что будет правильным решением.

namespace Foo { void PrintTo(const Bar& x, ::std::ostream* os) { *os << "Bar " << &x; }}