C++ C++;:使用set方法时程序崩溃
所以基本上我试图用一些数据填充我的数组,但显然我犯了一个错误。 问题在于使用方法setName()时。不知怎的,程序后来崩溃了。我做错了什么 这是我的节目: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:
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
成员-数组不需要包含指针。