Преобразовать координаты двойной точки в строку - PullRequest
2 голосов
/ 05 февраля 2012
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

также красная линия под «<<» говорит о том, что ---- ни один оператор «<<» не соответствует этим операндам </p>

действительно не знаю почему ..

Спасибо!

1 Ответ

4 голосов
/ 05 февраля 2012

Вам нужно #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,...).Если это не так, вы можете либо изменить их ( принцип наименьшего удивления ), либо напрямую получить доступ к базовым элементам данных class.

Если выборясь с такого рода ошибками компилятора, я настоятельно рекомендую вам получить хорошую книгу по C ++ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...