不能对类进行任何更改,因此我无法添加任何为我设置名称的新函数。
class ele
{
char* name;
public:
ele() :name(nullptr){}
~ele()
{
if (name)
delete[]name;
}
char*& GetName();
};
#endif
我尝试访问该名称但是在cin Debug断言失败后它给出了错误。空指针无效。
> ` char*& ele::GetName()
{
cout << "Please Enter the name"<< endl;
cin >> this->name;
return this->name;
}`
答案 0 :(得分:3)
如果你不能改变你的类(并且使用std::string
),你需要至少在cin>>this->name
之前分配内存,现在你使用的是一个UB的空值。所以您的修复程序如下所示:
if (this->name == nullptr)
this->name = new char[64]; // << !!
cin >> this->name;