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();