给出一个类似的模板类:
template<typename T,typename V>
class IAmTemplate {
public:
virtual boost::shared_ptr<V> get_v() const = 0;
virtual boost::shared_ptr<T> get_t() const = 0;
};
和Mock实现:
template <typename T, typename V>
class MockIAmTemplate : public IAmTemplate<T,V> {
public:
MOCK_CONST_METHOD0_T(get_v, boost::shared_ptr<V>());
MOCK_CONST_METHOD0_T(get_t, boost::shared_ptr<T>());
};
看起来这应该没有问题。事实上,我发现我可以使用clang,DevStudio和XCode 8.2来构建它。但是当我转到XCode 8.3或8.3.1时,我会抛出错误: .cache / cmake_build_system / ExternalLibs / gmock / v1.7.0_2 / Applications_macosx_fat_cxx11 / include / gmock / internal / gmock-internal-utils.h:371:7:绑定取消引用的空指针引用具有未定义的行为
似乎MOCK宏对返回类型boost :: shared_ptr不满意,而在以前的版本中,它很好用。
有什么想法吗?
答案 0 :(得分:0)
事实证明,有一个更新版本的GMock,它解决了我的问题。在将构建切换到它之后,我不再收到编译错误。