XCode 8.3.1错误模拟模板类

时间:2017-04-12 00:13:43

标签: c++ xcode templates gmock

给出一个类似的模板类:

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不满意,而在以前的版本中,它很好用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

事实证明,有一个更新版本的GMock,它解决了我的问题。在将构建切换到它之后,我不再收到编译错误。