C++ 返回错误值的简单单行类方法
我有一个奇怪的问题,我不知道怎么了 我有一个类C++ 返回错误值的简单单行类方法,c++,date,inheritance,output,C++,Date,Inheritance,Output,我有一个奇怪的问题,我不知道怎么了 我有一个类出版物,由类成员字符串标题和字符串文本组成 我还有一个名为publication\u和
出版物
,由类成员字符串标题
和字符串文本
组成
我还有一个名为publication\u和
的类,它继承自publication
,但还有一个名为string date
的附加字段,它表示某篇文章的发布日期
我还有一个类news
,它继承自publication\u和\u date
,并具有string sources
的附加字段
问题是:我有一个类型为news
的对象,当我使用该对象的方法get\u date
时,我得到值M
这是我的主要观点:
void main()
{
news MyNews;
MyNews.set_date(3,12,2016);
MyNews.set_sources("IGN");
MyNews.set_headline("MGS V wins GOTY award");
MyNews.set_text("Metal Gear Solid V won the prestigious game of the year award!");
cout << MyNews.ToString();
getch();
}
如您所见,方法get\u date()
非常简单。只有一行
我不知道为什么我得到的值是m
我给你的void main的输出是:
Headline: MGS V wins GOTY award
Text: Metal Gear Solid V won the prestigious game of the year award!
Date: M
Sources: IGN
我完全搞不懂为什么会这样。非常感谢您的帮助
Edit1:这是ToString的代码
string news::ToString()
{
string ToReturn;
ToReturn="\nHeadline: " + get_headline() + '\n' + "Text: " + get_text() + '\n'+"Date: " + get_date()+'\n'+"Sources: " + get_sources();
return ToReturn;
}
编辑2:
我想我知道问题是什么
NewDay、NewMonth、NewYear
是整数。因此,+
运算符与字符串不同。我需要以某种方式使它们成为字符。您将得到一个M
或其他随机值,因为您将数字相加,而不是串接字符串。char'/'
实际上是一个值为47的小整数
将所有内容转换为字符串的一种方法是使用stringstream
(位于sstream头中):
std::stringstream-ss;
ss我们需要ToString
的代码,它应该是int main
编辑的。我也知道问题是什么,我还不知道如何解决它。我在结尾为“set_date”写的那行是错误的,因为我试图计算整数,+在整数上不起作用。我需要以某种方式使这些整数成为字符。date=NewDay+'/'+NewMonth+'/'+NewYear代码> C++不是JavaScript。你把int
和std::string
混合在一起。是的,我也意识到了这一点。如何将“NewDay”“NewMonth”和“NewYear”转换为字符,以便进行转换?
string news::ToString()
{
string ToReturn;
ToReturn="\nHeadline: " + get_headline() + '\n' + "Text: " + get_text() + '\n'+"Date: " + get_date()+'\n'+"Sources: " + get_sources();
return ToReturn;
}
std::stringstream ss;
ss << NewDay << '/' << NewMonth << '/' << NewYear;
date = ss.str();