问题描述
我有一堂课:
n-1
那么:
class Person
{
string* name;
Person(string nm)
{
name=&nm;
}
void print()
{
cout<<"That name: "<<*name<<endl;
}
};
控制台显示“分段错误”。好的,但是我错在哪里,我应该如何编写此代码来打印它?附注。我必须在这个类中使用一个字段“字符串*名称”。
解决方法
您按值获取参数,然后引用它。在构造函数的末尾,参数被销毁,留下一个悬空指针。
Person(string nm)
{
name=&nm;
}
要么按值存储字符串而不是按指针存储,要么将其存储为 const char*。
,我解决了这个问题。我不得不在课堂上这样做:
class Person
{
string* name;
Person(string* nm)
{
name=nm;
}
void print()
{
cout<<"That name: "<<*name<<endl;
}
};
然后在函数 main 中:
main()
{
string str_name="Jack";
Person first(&str_name);
first.print();
}
现在,一切都正确了。