我正在练习C ++考试。即使在以前的考试副本中也存在这样的情况(尽管我们在纸上编写代码,至少目前是这样)。
这是其中一个结构(其中最简单的一个):
struct Date{
int* _d, *_m, *_y;
void Create(int d, int m, int y)
{
_d = new int;
_m = new int;
_y = new int;
*_d = d;
*_m = m;
*_y = y;
}
}
现在,在main()
函数中,如果我这样做:
Date date;
Date* pDate = new Date;
date.Create(1,1,2001);
pDate->Create(2,2,2002);
cout << "The month: " << *date._m << endl;
cout << "The month: " << *date->_m << endl;
控制台会崩溃或类似 - 它不会打印月份值。
我也试过这个: cout&lt;&lt; &#34;月份:&#34; &LT;&LT; *(date._m)&lt;&lt; ENDL; cout&lt;&lt; &#34;月份:&#34; &LT;&LT; *(date-&gt; _m)&lt;&lt; ENDL;
但无济于事。
是谁愿意帮忙?谢谢!编辑:这里是完整的代码:http://pastebin.com/DMWx2Hk5
编辑:事实证明我的成员函数名称(Create)已损坏或类似的东西,而这就是控制台崩溃的罪魁祸首。我改变了它,它开始起作用了。
答案 0 :(得分:0)
你还没有为pDate
分配任何内存,你需要Date* pDate = new Date()
- 指针_d
_m
和_y
必须住在某个地方,在这种情况下date
他们在堆栈中占用3*sizeof(int*)
个字节,但对于你的指针,这3个点还没有在任何地方生活。所以你需要使用new