代码无法输入名称?

时间:2017-02-03 18:58:52

标签: c++ visual-c++

不能对类进行任何更改,因此我无法添加任何为我设置名称的新函数。

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;
      }`

1 个答案:

答案 0 :(得分:3)

如果你不能改变你的类(并且使用std::string),你需要至少在cin>>this->name之前分配内存,现在你使用的是一个UB的空值。所以您的修复程序如下所示:

if (this->name == nullptr)
   this->name = new char[64]; // << !!
cin >> this->name;