Может ли Google Mock метод с возвращаемым типом умного указателя?
У меня есть фабрика, которая возвращает умный указатель. Независимо от того, какой умный указатель я использую, я не могу заставить Google Mock издеваться над фабричным методом.
Макет объекта является реализацией чистого абстрактного интерфейса, где все методы являются виртуальными. У меня есть прототип:
MOCK_METHOD0(Create, std::unique_ptr<IMyObjectThing>());
И я получаю:
"...gmock/gmock-spec-builders.h(1314): error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>'"
Тип, указанный в интеллектуальном указателе, определен.
И я понимаю, что он пытается получить доступ к одному из конструкторов, объявленных закрытыми, но я не понимаю, почему. Когда это был std :: auto_ptr, ошибка говорила, что не было конструктора копирования, что меня смущает.
Во всяком случае, есть ли способ Mock метод, который возвращает умный указатель? Или есть лучший способ построить фабрику? Является ли мое единственное решение вернуть необработанный указатель (blech ...)?
Моя среда - Visual Studio 2010 Ultimate и Windows 7. Я не использую CLI.