如何通过 class 方法打印字符串*?
How to print string* by a class method?
我有一个class:
class Person
{
string* name;
Person(string nm)
{
name=&nm;
}
void print()
{
cout<<"That name: "<<*name<<endl;
}
};
然后:
main()
{
Person first("Jack");
first.print();
}
控制台显示“分割错误”。好的,但是我哪里错了,我应该如何编写这段代码来打印它? PS。我必须在此 class.
中使用字段“string* name”
您按值获取参数,然后获取对它的引用。在构造函数的末尾,参数被破坏,留下一个悬空指针。
Person(string nm)
{
name=&nm;
}
要么按值而不是指针存储字符串,要么将其存储为 const char*。
我解决了这个问题。我必须在 class:
中完成
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();
}
现在,一切都正确了。
我有一个class:
class Person
{
string* name;
Person(string nm)
{
name=&nm;
}
void print()
{
cout<<"That name: "<<*name<<endl;
}
};
然后:
main()
{
Person first("Jack");
first.print();
}
控制台显示“分割错误”。好的,但是我哪里错了,我应该如何编写这段代码来打印它? PS。我必须在此 class.
中使用字段“string* name”您按值获取参数,然后获取对它的引用。在构造函数的末尾,参数被破坏,留下一个悬空指针。
Person(string nm)
{
name=&nm;
}
要么按值而不是指针存储字符串,要么将其存储为 const char*。
我解决了这个问题。我必须在 class:
中完成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();
}
现在,一切都正确了。