mã nguồn hiện tại:C++ int chuỗi chuyển đổi
string itoa(int i)
{
std::string s;
std::stringstream out;
out << i;
s = out.str();
return s;
}
class Gregorian
{
public:
string month;
int day;
int year; //negative for BC, positive for AD
// month day, year
Gregorian(string newmonth, int newday, int newyear)
{
month = newmonth;
day = newday;
year = newyear;
}
string twoString()
{
return month + " " + itoa(day) + ", " + itoa(year);
}
};
Và trong chính của tôi:
Gregorian date = new Gregorian("June", 5, 1991);
cout << date.twoString();
Tôi nhận được lỗi này:
mayan.cc: In function ‘int main(int, char**)’:
mayan.cc:109:51: error: conversion from ‘Gregorian*’ to non-scalar type ‘Gregorian’ requested
Có ai biết tại sao int thế nào để chuyển đổi chuỗi không thành công ở đây? Tôi khá mới với C + + nhưng quen thuộc với Java, tôi đã dành rất nhiều thời gian tìm kiếm một câu trả lời đơn giản cho vấn đề này nhưng hiện tại đang bối rối.
Bạn có thể thoát khỏi của 'std :: string s;' trong 'itoa' và chỉ 'trở out.str();'. Chuỗi trả về sẽ được xây dựng trước khi chuỗi bị phá hủy. Các trình biên dịch hợp lý có khả năng sẽ tạo ra cùng một mã chính xác trong cả hai trường hợp, nhưng tạm thời bổ sung có xu hướng gợi ý cho những người xem mã của bạn mà bạn không hiểu hoặc tin tưởng các quy tắc phạm vi C++. –
Không liên quan, nhưng ý bạn là đặt tên hàm là 'toString()'? – Neil
Đến từ Java, tôi không biết liệu C++ đã có phương thức toString() chưa. Tôi không muốn quá tải nó nếu tôi không cần. –