string Point::ToString(const Point& pt)
{
std::stringstream buffX; //"Incomplete type is not allowed"????
buffX << pt.GetX(); // no operator "<<" matches these operands????
std::stringstream buffY;
buffY << pt.GetY();
string temp = "Point(" + buffX + ", " + buffY + ")"; //???....how to combine a couple of strings into one?..
return temp.str();
}
我按照类似问题的代码,但系统说“不允许不完整类型”--- buffX下的红线
“&lt;&lt;”之下的红线也是说----没有操作员“&lt;&lt;”匹配这些操作数
真的不知道为什么..
谢谢!
答案 0 :(得分:4)
您需要#include <sstream>
才能使用std::ostringstream
。
然后:
std::string Point::ToString(const Point& pt)
{
std::ostringstream temp;
temp << "Point(" << pt.GetX() << ", " << pt.GetY() << ")";
return temp.str();
}
目前尚不清楚为什么要传递Point
,因为这是该类的成员。也许更清洁:
std::string Point::ToString() const
{
std::ostringstream temp;
temp << "Point(" << GetX() << ", " << GetY() << ")";
return temp.str();
}
这可能不正确,假定GetX()
和GetY()
return
某种数字类型(int
,float
,double
, ...)。如果不是这种情况,您可能希望更改它们(principle of least astonishment)或直接访问class
的基础数据成员。
如果你正在努力解决这类编译错误,我强烈建议你自己a good C++ book。