Kann Google Mock eine Methode mit einem smart-pointer zurück geben?

Ich habe eine Fabrik, die gibt einen smart-pointer. Unabhängig davon, was intelligente Zeiger, die ich benutze, ich bekomme keine Google-Mock mock die factory-Methode.

Dem mock-Objekt ist die Implementierung einer rein abstrakten Schnittstelle, wo alle Methoden sind virtual. Ich habe ein Vorbild:

MOCK_METHOD0(Create, std::unique_ptr<IMyObjectThing>());

Und ich bekomme:

"...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>'"

Art wies in der smart-pointer definiert ist.

Bekommen und habe es versucht, Zugang zu einem der Konstruktoren deklariert private, aber ich verstehe nicht warum. Bei dieser wurde ein std::auto_ptr, der Fehler sagte, es war kein copy-Konstruktor, die mich verwirrt.

Sowieso, gibt es eine Möglichkeit, zu Verhöhnen, eine Methode, die zurückgibt einen smart-pointer? Oder gibt es einen besseren Weg, um eine Fabrik zu bauen? Meiner ist nur zu lösen, um wieder eine raw-pointer (blech...)?

Meinem Umfeld ist Visual Studio 2010 Ultimate und Windows 7. Ich bin nicht mit CLI.

InformationsquelleAutor Matthew Reddington | 2011-09-30

Schreibe einen Kommentar