我为正在处理的类编写了to_string()方法。它应该与运算符重载一起使用以打印类对象。但是,如果我做这样的事情:

std::ostringstream oss;
oss << Jd(0.5);
BOOST_CHECK_EQUAL( oss.str(), std::string("JD 0.5") );


与其调用我的to_string()函数,不如将它转换为另一个类的运算符重载。有什么办法可以链接
我的to_string隐式打印Jd对象,即使它不是直接调用to_string()也不行?这也是我的to_string()方法:

std::string Jd::to_string() const {

    ostringstream oss;
    oss << "JD " << jd_;
    return oss.str();
}

最佳答案

您需要为operator<<覆盖Jd并让它调用to_string()函数

std::ostringstream& operator<<(std::ostringstream& os, const Jd& jd)
{
  os << jd.to_string();
  return os;
}

10-06 13:20