【发布时间】:2015-09-04 15:33:31
【问题描述】:
我正在练习 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 _m)
但无济于事。
有人愿意帮忙吗?谢谢!
编辑:这是完整的代码:http://pastebin.com/DMWx2Hk5
编辑:事实证明,我的成员函数名称(创建)已损坏或类似的东西,仅此一项就是控制台崩溃的罪魁祸首。我改变了它,它开始工作了。
【问题讨论】:
-
你完全没有必要在其中使用指针。
-
我同意,但这就是学生们在纸上解决这个问题的方式。我还认为我应该删除这些指针属性并使它们成为纯整数但是..我想我应该首先找到一种方法让它按原样工作。
-
如果您确实需要使用指针,初始化它们是必不可少的!否则你不知道它们是否指向分配的内存。
-
@crashmstr 我刚刚添加了
pDate的初始化(作为指针的那个) -
原来我的成员函数名 (Create) 已损坏或类似情况,仅此一项就是控制台崩溃的罪魁祸首。我改变了它,它开始工作了。