由于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();
};
答案 0 :(得分:5)
std::stringstream ss;
ss << "(" << x << "," << y << ")";
return ss;
(这是整个功能体)。
答案 1 :(得分:1)
问题不在于x_str
和y_str
是局部变量,而是分配不按预期执行。那不是你将int
转换为string
。
您可以使用_itoa()
将int
转换为char*
或stringstream
,如迈克尔的答案所示。