我有一个返回智能指针的工厂。无论我使用什么智能指针,我都无法让 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 时,错误说没有复制构造函数,这让我感到困惑。
无论如何,有没有办法模拟返回智能指针的方法?或者有没有更好的方法来建造工厂?我唯一的决心是返回一个原始指针(blech ...)吗?
我的环境是 Visual Studio 2010 Ultimate 和 Windows 7。我没有使用 CLI。