Boost.Test检查指针是否为空

时间:2016-06-07 08:01:25

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

我有以下测试:

BOOST_CHECK_NE(pointer, nullptr);

由于

,编译失败
  

/xxx/include/boost/test/tools/detail/print_helper.hpp:50:14:错误:'operator<<'的模糊重载(操作数类型是'std :: ostream {aka std :: basic_ostream }'和'std :: nullptr_t')

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

2 个答案:

答案 0 :(得分:8)

对指针非空的最简单检查是:

BOOST_CHECK(pointer);

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

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

答案 1 :(得分:3)

正如错误消息中所述,nullptr具有不明确的重载。

BOOST_CHECK(pointer);

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

应该做的。