使用您自己的类来矢量C ++

时间:2011-08-04 03:25:16

标签: c++ macos xcode4

我尝试在谷歌搜索,但它只显示了我不想要的内容。

我有一个名为Student的类,在我的主类中,我将它实例化为一个向量。

我尝试在我的主要课程中添加这一行

vector<Student> students;
students[0].setFirstName("Test");

它会在我的学生班上引发错误

void Student::setFirstName(string fname) { firstName = fname; }

它说EXC_BAD_ACCESS。我在Macintosh中使用Xcode

编辑:我希望它是动态的,这就是为什么我没有指定尺寸。

4 个答案:

答案 0 :(得分:5)

创建向量时,其中包含多少个元素?没有。然而,您尝试立即访问元素。您需要先将元素放入其中。在初始化时,如下所示:

vector<Student> students(10);

或其他一些方法,例如push_backresize

答案 1 :(得分:5)

我相信你知道,表达式students[0]意味着您正试图访问vector中的第一项。但是为了访问第一项,您必须先添加第一项。

很简单,在尝试使用向量中的任何内容之前,先添加对vector::push_back的调用。或者,通过

声明向量
vector<Student> students(/*number of default Students here*/);

还有其他方法,但只要确保你有你想要使用的东西。

非常具体,传递给[]操作的索引必须满足条件0 <= index && index < students.size()。在您的情况下,students.size() == 00 <= index && index < 0,显然无法满足。

答案 2 :(得分:2)

您的vector为空,但您尝试访问其第一个元素。在访问其内容之前,请尝试在vector中添加内容。

答案 3 :(得分:2)

您的vector尺寸超出了范围。您正在尝试访问不存在的元素。您可以在初始化时声明其大小。

vector<Student> students(SIZE);

作为旁注,setter方法通常采用const引用:

void Student::setFirstName(const string &fname) { firstName = fname; }