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

123*_*9 0 0 c++ macos xcode4

我尝试在谷歌搜索,但它只显示我不想要的东西.

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

我尝试在我的主类中添加这一行

vector<Student> students;
students[0].setFirstName("Test");
Run Code Online (Sandbox Code Playgroud)

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

void Student::setFirstName(string fname) { firstName = fname; }
Run Code Online (Sandbox Code Playgroud)

它说EXC_BAD_ACCESS.我在Macintosh中使用Xcode

编辑:我希望它是动态的,这就是为什么我没有指定大小.

Ben*_*ley 5

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

vector<Student> students(10);
Run Code Online (Sandbox Code Playgroud)

或者其他一些方法,比如push_back,或resize.

  • @Seth:不确定"10个空的"是说出这个的最好方法.该向量中将有10个完整的Student实例. (2认同)

Ken*_*nde 5

我确定你知道,这个表达students[0]意味着你正试图访问第一个项目vector.但是,要访问第一个项目,您必须先添加第一个项目.

很简单,vector::push_back在尝试使用向量中的任何内容之前添加一个调用.或者,通过声明向量

vector<Student> students(/*number of default Students here*/);
Run Code Online (Sandbox Code Playgroud)

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

具体来说,传递给[]操作的索引必须满足条件0 <= index && index < students.size().在你的情况下,students.size() == 0那么0 <= index && index < 0,显然不可能满足.