将双点坐标转换为字符串

时间:2012-02-05 03:09:55

标签: c++ visual-c++

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;”匹配这些操作数

真的不知道为什么..

谢谢!

1 个答案:

答案 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某种数字类型(intfloatdouble, ...)。如果不是这种情况,您可能希望更改它们(principle of least astonishment)或直接访问class的基础数据成员。

如果你正在努力解决这类编译错误,我强烈建议你自己a good C++ book