スマート ポインターを返すファクトリがあります。使用するスマート ポインターに関係なく、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>'"
スマート ポインターでポイントされる型が定義されます。
そして、プライベートと宣言されたコンストラクターの1つにアクセスしようとしていると思いますが、その理由はわかりません。これが std::auto_ptr の場合、コピー コンストラクターがないというエラーが表示され、混乱しました。
とにかく、スマート ポインターを返すメソッドをモックする方法はありますか? または、工場を建設するためのより良い方法はありますか? 生のポインター (blech...) を返す唯一の解決策はありますか?
私の環境は Visual Studio 2010 Ultimate と Windows 7 です。CLI は使用していません。