我尝试在谷歌搜索,但它只显示了我不想要的内容。
我有一个名为Student的类,在我的主类中,我将它实例化为一个向量。
我尝试在我的主要课程中添加这一行
vector<Student> students;
students[0].setFirstName("Test");
它会在我的学生班上引发错误
void Student::setFirstName(string fname) { firstName = fname; }
它说EXC_BAD_ACCESS。我在Macintosh中使用Xcode
编辑:我希望它是动态的,这就是为什么我没有指定尺寸。
答案 0 :(得分:5)
创建向量时,其中包含多少个元素?没有。然而,您尝试立即访问元素。您需要先将元素放入其中。在初始化时,如下所示:
vector<Student> students(10);
答案 1 :(得分:5)
我相信你知道,表达式students[0]
意味着您正试图访问vector
中的第一项。但是为了访问第一项,您必须先添加第一项。
很简单,在尝试使用向量中的任何内容之前,先添加对vector::push_back
的调用。或者,通过
vector<Student> students(/*number of default Students here*/);
还有其他方法,但只要确保你有你想要使用的东西。
非常具体,传递给[]
操作的索引必须满足条件0 <= index && index < students.size()
。在您的情况下,students.size() == 0
,0 <= index && index < 0
,显然无法满足。
答案 2 :(得分:2)
您的vector
为空,但您尝试访问其第一个元素。在访问其内容之前,请尝试在vector
中添加内容。
答案 3 :(得分:2)
您的vector
尺寸超出了范围。您正在尝试访问不存在的元素。您可以在初始化时声明其大小。
vector<Student> students(SIZE);
作为旁注,setter
方法通常采用const
引用:
void Student::setFirstName(const string &fname) { firstName = fname; }