Puede Google Mock un método con un tipo de retorno de puntero inteligente?
Tengo una fábrica que devuelve un puntero inteligente. Independientemente del puntero inteligente que use, no puedo hacer que Google Mock se burle del método de fábrica.
El objeto simulado es la implementación de una interfaz abstracta pura donde todos los métodos son virtuales. Tengo un prototipo:
MOCK_METHOD0(Create, std::unique_ptr<IMyObjectThing>());
Y obtengo:
"...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>'"
El tipo señalado en el puntero inteligente está definido.
Y entiendo que está intentando acceder a uno de los constructores declarados privados, pero no entiendo por qué. Cuando se trataba de un std :: auto_ptr, el error decía que no había un constructor de copias, lo que me confunde.
e todos modos, ¿hay alguna manera de burlarse de un método que devuelve un puntero inteligente? ¿O hay una mejor manera de construir una fábrica? ¿Es mi única resolución devolver un puntero sin formato (blech ...)?
Mi entorno es Visual Studio 2010 Ultimate y Windows 7. No estoy usando CLI.