String 如何通过类方法打印字符串*?

String 如何通过类方法打印字符串*?,string,class-method,indicator,String,Class Method,Indicator,我有一门课: class Person { string* name; Person(string nm) { name=&nm; } void print() { cout<<"That name: "<<*name<<endl; } }; 控制台显示“分段故障”。好的,但是我错在哪里了?我应该如何编写这个代码来打印它呢

我有一门课:

class Person
{
    string* name;
    
     Person(string nm)
     {
       name=&nm;
     }

     void print()
     {
       cout<<"That name: "<<*name<<endl;
     }

};

控制台显示“分段故障”。好的,但是我错在哪里了?我应该如何编写这个代码来打印它呢?另外,我必须在这个类中使用一个字段“string*name”。

您按值获取一个参数,然后引用它。在构造函数的末尾,参数被解构,留下一个悬空的指针

Person(string nm)
     {
       name=&nm;
     }

要么按值而不是指针存储字符串,要么将其存储为常量字符*

我解决了这个问题。我必须在课堂上做:

class Person
{
    string* name;
    
     Person(string* nm)
     {
       name=nm;
     }

     void print()
     {
       cout<<"That name: "<<*name<<endl;
     }

};

现在,一切都是正确的。

请确保用适当的语言标记您的问题。(我想这是C++)我下次会记得的。(是的,这是C++)
class Person
{
    string* name;
    
     Person(string* nm)
     {
       name=nm;
     }

     void print()
     {
       cout<<"That name: "<<*name<<endl;
     }

};
main()
{
   string str_name="Jack";
   Person first(&str_name);
   
   first.print();
}