读取struct属性的值的麻烦,这些属性是int * type

时间:2015-09-04 15:33:32

标签: c++ pointers struct

我正在练习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)已损坏或类似的东西,而这就是控制台崩溃的罪魁祸首。我改变了它,它开始起作用了。

1 个答案:

答案 0 :(得分:0)

你还没有为pDate分配任何内存,你需要Date* pDate = new Date() - 指针_d _m_y必须住在某个地方,在这种情况下date他们在堆栈中占用3*sizeof(int*)个字节,但对于你的指针,这3个点还没有在任何地方生活。所以你需要使用new

为堆上的内存分配内存