У меня есть factory, который возвращает умный указатель. Независимо от того, какой умный указатель я использую, я не могу заставить Google Mock издеваться над методом factory.
Макет-объект представляет собой реализацию чистого абстрактного интерфейса, где все методы являются виртуальными. У меня есть прототип:
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 метода, который возвращает умный указатель? Или есть лучший способ создать factory? Единственное мое решение - вернуть необработанный указатель (blech...)?
Моя среда - это Visual Studio 2010 Ultimate и Windows 7. Я не использую CLI.