调用简单getter方法后出错:basic_string::_S_create
error after calling simple getter method: basic_string::_S_create
我有一个简单的函数,可以使用getter方法打印出一个人的名字。它第一次打印出名称很好,但第二次它抛出错误并停止工作。
调试器显示,在进行初始调用后,人名的值从原来的值变为一堆随机字母和数字。
任何帮助都将不胜感激。
error basic_string::_S_create
string personName("Jim");
// check if person already exists (will return NULL in
// the case of Jim during this test)
Person *person = personList.getPerson(personName);
if(!person)
{
cout << "creating new person" << endl;
person = createPerson(personName);
cout << person->getName() << endl; // prints 'Jim'
cout << person->getName() << endl; // stops working here.
}
Person* createPerson(string name)
{
Person person(name);
personList.addPerson(person);
Person *foundPerson = personList.getPerson(name);
return foundPerson;
}
PersonList
...
void PersonList::addPerson(Person& person)
{
Person *person_ptr = &person;
personList.push_back(person_ptr);
}
Person* PersonList::getPerson(string name)
{
for(vector<Person*>::iterator it = personList.begin(); it != personList.end(); ++it)
{
if((*it)->getName() == name)
{
return *it;
}
}
}
...
个人
class Person
{
public:
Person(string _name)
string getName() const;
...
private:
string name;
...
}
...
Person::Person(string _name)
:name(_name)
{
}
string Person::getName() const
{
return name;
}
...
将添加人员更改为:
void PersonList::addPerson(Person& person)
{
Person *person_ptr = new Person(person);
personList.push_back(person_ptr);
}
相关文章:
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- Using C++ CryptAPI:CNG Create CSR
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 这是 basic.def.odr 部分的缺陷吗?
- Firebase C++VS2018 SDL2-在Firebase::app::create(..)上执行异常处理
- 未定义的对象(〔basic.life〕/8):为什么允许引用重新绑定(和常量修改)
- QThread::create 似乎没有将参数传递给函数
- 为什么"non-standard syntax; use '&' to create a pointer to member"在 CTOR 中使用线程?
- QThread::create running on UI Thread
- C++标准在[basic.scope.hiding]中"same scope"到底意味着什么?
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- 使用宏替换工厂模式样式 API 中的"create()"函数
- 错误:'create'不是 'cv::Tracker' 的成员
- Gtk::Main 和 Gtk::Application::create 有什么区别?
- 为什么我们需要 [basic.scope.class]/2?
- [basic.lookup]/1 中最后一句话是什么意思?
- 字符串C :libc abi.dylib:终止未被发现的类型std :: out_of_range:basic
- 如果它被定义为 C++ 类中的成员函数,我得到了"non-standard syntax; use '&' to create a pointer to member"
- TagniFi的HTTPS Basic Authentication 在 Qt 中失败
- libgit2:git_clone() 失败并出现"failed to create ssl object"错误