【问题标题】:Boost.Test check whether a pointer is nullBoost.Test 检查指针是否为空
【发布时间】:2016-06-07 08:01:25
【问题描述】:

我有以下测试:

BOOST_CHECK_NE(pointer, nullptr);

由于

编译失败

/xxx/include/boost/test/tools/detail/print_helper.hpp:50:14: 错误:'operator

出了什么问题,我应该如何测试空指针?

【问题讨论】:

    标签: c++ c++11 boost boost.test


    【解决方案1】:

    检查指针是否为非空的最简单方法是:

    BOOST_CHECK(pointer);
    

    空指针隐式转换为false,非空指针隐式转换为true

    至于您的用例的问题是:nullptr 不是指针类型,它是std::nullptr_t 类型。它可以转换为任何指针类型(或指向成员类型的指针)。但是,将std::nullptr_t 插入流中不会出现<< 的重载。您必须将 nullptr 转换为适当的指针类型才能使其工作。

    【讨论】:

      【解决方案2】:

      如错误消息中所述,nullptr 具有模棱两可的重载。

      BOOST_CHECK(pointer);
      

      BOOST_CHECK_NE(pointer, static_cast<decltype(pointer)>(nullptr));
      

      应该做的工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 2015-07-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 2013-10-15
        相关资源
        最近更新 更多