为什么我的 setter 方法会产生错误的访问错误
Why is my setter method producing a bad access error
错误的访问意味着我正在尝试访问不存在的内存 我已经尝试并尝试为这个类分配内存,但到处都失败了。我不知道错误实际来自哪里。它只告诉我我的 setter 方法是程序崩溃时。在 setFName(( 方法中是发生错误的地方。但在主要方法是它实际发生的地方。 护士.hpp
#ifndef Nurse_hpp
#define Nurse_hpp
#include <stdio.h>
#include <string>
#include <stdlib.h>
using namespace std;
class nurse{
private:
string firstName;
public:
nurse() {
firstName = "jim";
}
string getFName() {return firstName;}
void setFName(string fName) {firstName = fName;} // Thread 1: bad access 0x0
};
#endif /* Nurse_hpp */
这是错误实际发生的地方 主.cpp
#include <cstdint> // ::std::uint64_t type
#include <cstddef> // ::std::size_t type
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include "nurseHolder.hpp"
using namespace std;
nurseHolder *l = new nurseHolder();
int main() {
return 0;
}
最后是导致问题的类 护士持有人.hpp
#ifndef Nurses_hpp
#define Nurses_hpp
#include <stdio.h>
#include <vector>
#include <stdlib.h>
#include "Nurse.cpp"
using namespace std;
class nurseHolder{
private:
int nurse_cnt;
int nurse_cap;
vector<nurse> nurse_list;
public:
nurseHolder() {
nurse_cnt = 0;
nurse_cap = 10;
for(int i= 0; i < 11; i++){
nurse_list[i].setFName("na");
}
}
vector<nurse> &getNurseList() { return nurse_list;}
};
#endif /* Nurses_hpp */
我试图使这个尽可能紧凑,如果它有很多代码,对不起。
这是我为使代码正常工作而更改的内容:
nurseHolder() {
nurse_cnt = 0;
nurse_cap = 10;
for(int i= 0; i < 11; i++){
nurse l;
nurse_list.pushback(l);
}
}
这是正确的方法吗?
您的向量nurse_list
的大小为 0。因此,不能使用运算符[]
设置名称。 有两种方法可以更正此问题:
- 设置矢量的初始大小,并使用
[]
设置名称。 - 使用
push_back
将元素添加到矢量。
第一种方法。
nurse_list.resize(noOfTotalNurses).
nurse_list[i].setFName("name");
第二种方法。
nurse tNurse; //local nurse object
tNurse.setFName("name");
nurse_list.push_back(tNurse);
相关文章:
- 尝试从C++访问 UWP 的电子邮件邮件类会导致"REGDB_E_CLASSNOTREG类未注册"错误
- C++ - 循环访问指针数组会导致错误
- 执行错误访问 遍历向量
- 错误访问 读入对象后
- 如何修复 CopyFile() 错误 5 - 访问被拒绝错误
- CreateFile 在尝试打开目录进行读取时始终返回错误 5(访问被拒绝)
- 范围检查检测到的检测代码和超出范围的错误访问
- 查找() 上的 C++ 错误访问错误
- 错误访问另一个插件中的类(错误:未定义的引用)
- C STD ::排序Intel编译器错误:访问违规
- libcurl、OSX、curl_multi_执行错误访问
- C++数组错误:访问冲突读取位置0xC0000005
- C++LinkedList错误:访问冲突错误
- 使用.open()成员函数C++的ifstream数组的错误访问代码
- C++ 段错误 访问对象指针向量的 std::vector.size()
- JNI 从 C 错误访问对象数组
- 带有内存错误访问的C++结构new
- XCode C++上的错误访问错误
- 错误访问冲突写入位置0x00229C20.尝试在控制台中输入字符串时
- MySQL 连接器/C++ 错误访问崩溃