提问人:sesodesa 提问时间:10/2/2019 最后编辑:eyllanescsesodesa 更新时间:10/3/2019 访问量:67
为什么向 std::ostream 馈送 nullptr 会产生来自操作系统的信号 11,即分段错误,我该如何处理它?
Why does feeding a nullptr to std::ostream produce a signal 11, aka segmentation fault, from the OS, and how do I handle it?
问:
我有一个带有方法的类,我正在尝试测试。该方法本身定义为Date
Date::print
void Date::print(std::ostream *printStream) const
{
invariant();
*printStream << day_ << '.' << month_ << '.' << year_;
}
测试功能为
void Unittest::print()
{
// Creating and printing the date into string, checking if ok
Date d(4, 5, 2000);
std::ostringstream printStream;
d.print(&printStream);
QCOMPARE(printStream.str(), std::string("4.5.2000"));
// Testing with a nullptr
d.print(nullptr);
}
有效日期通过测试,没问题,但测试会产生分段错误。我应该如何修改方法定义来处理这种情况?nullptr
nullptr
答: 暂无答案
评论
nullptr
*printStream << ...
nullptr
std::ostream
nullptr
std::ostream
printStream
nullptr
Date::print
void Date::print(std::ostream &printStream) const;
void Date::print(std::ostream *printStream) const;