C++ C++;:使用set方法时程序崩溃

C++ C++;:使用set方法时程序崩溃,c++,C++,所以基本上我试图用一些数据填充我的数组,但显然我犯了一个错误。 问题在于使用方法setName()时。不知怎的,程序后来崩溃了。我做错了什么 这是我的节目: using namespace std; class CEvent { public: CEvent() = default; ~CEvent(){}; void setName(string str){Name = str;} string getName(){return Name;} private:

所以基本上我试图用一些数据填充我的数组,但显然我犯了一个错误。 问题在于使用方法setName()时。不知怎的,程序后来崩溃了。我做错了什么

这是我的节目:

using namespace std;
class CEvent
{
public:
    CEvent() = default;
    ~CEvent(){};
    void setName(string str){Name = str;}
    string getName(){return Name;}

private:
    string Name;
};

class CBlock
{
public:
    CBlock() = default;
    friend class CBooking;
    ~CBlock(){}

private:
    CEvent *Schedule[7][5];
};

class CBooking
{
public:
    CBooking() = default;
    void test();
    ~CBooking(){}

private:
    CBlock *Sched;
};

void CBooking::test()  
{ 
   Sched->Schedule[3][2] = new CEvent();
   Sched->Schedule[3][2]->setName("test");      //Problem here 
   cout << Sched->Schedule[3][2]->getName();  
}


int main()
{
    CBooking a;
    a.test();
    return 0;
}
使用名称空间std;
C类事件
{
公众:
CEvent()=默认值;
~CEvent(){};
void setName(string str){Name=str;}
字符串getName(){return Name;}
私人:
字符串名;
};
类CBlock
{
公众:
CBlock()=默认值;
朋友类图书;
~CBlock(){}
私人:
CEvent*附表[7][5];
};
课堂预习
{
公众:
CBooking()=默认值;
无效试验();
~CBooking(){}
私人:
CBlock*Sched;
};
void CBooking::test()
{ 
Sched->Schedule[3][2]=新的CEvent();
Sched->Schedule[3][2]->setName(“test”);//这里有问题
cout Schedule[3][2]->getName();
}
int main()
{
C预订a;
a、 test();
返回0;
}

成员
Sched
从未初始化为指向任何对象!行
Sched->Schedule[3][2]=new CEvent()也容易出错,您可能已经幸运了。您的解决方案可能是:

CBooking():Sched(新的CBlock()){

例如。

这正是让我困惑的地方。它在某些情况下起作用,但不知道为什么。感谢您也必须为CBlock中的CEvent*Schedule[7][5]分配内存,因为
Sched
被初始化为指向单个(动态分配的)
CBlock
没有必要将
Sched
作为指针。实例可以是直接的成员,并且不需要使用
new
表达式初始化该成员。你使用C++,所以不需要使用C语言或java技术。同样的注释也适用于
CBlock
Schedule
成员-数组不需要包含指针。