Как распечатать позицию - PullRequest
0 голосов
/ 02 февраля 2012

Поскольку x_str, y_str являются локальными, я не получаю правильный вывод в этой функции. (Недопустимые символы печатаются вместо x_str и y_str) Я не хочу добавлять в свой класс еще 2 переменные-члены x_str, y_str.

Следовательно, что может быть заменой этой функции для получения правильного вывода.

string Pos::getPosReport(){
        string x_str;
        x_str = x;
        string y_str;
        y_str = y;
       return string("(" + x_str + "," + y_str + ")" );
    }

РЕДАКТИРОВАТЬ:

class Pos {
    int x;
    int y;
public:
    Pos();
    Pos(Pos const&);
    Pos(int,int);

    Pos&     operator=(Pos const&);
    bool    operator==(Pos const&);
    bool    operator!=(Pos const&);

    void    setPos(Pos const&);
    void    setPos(int,int);

    void    setx(int);
    void    sety(int);

    int    getx() const ;
    int    gety() const ;

    string getPosReport();

    virtual ~Pos();
};

Ответы [ 2 ]

5 голосов
/ 02 февраля 2012
std::stringstream ss;
ss << "(" << x << "," << y << ")";
return ss; 

(это все тело функции).

1 голос
/ 02 февраля 2012

Проблема не в том, что x_str и y_str являются локальными переменными, а в том, что назначения не выполняют то, что вы ожидаете от них.Вы не конвертируете int в string.

. Вы можете использовать _itoa() для преобразования int в char* или stringstream, как в ответе Михаила.

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