我尝试在谷歌搜索,但它只显示我不想要的东西.
我有一个名为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
编辑:我希望它是动态的,这就是为什么我没有指定大小.
创建矢量时,其中包含多少个元素?没有.然而,您尝试立即访问元素.您需要先将元素放入其中.在初始化时,如下所示:
vector<Student> students(10);
Run Code Online (Sandbox Code Playgroud)
我确定你知道,这个表达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,显然不可能满足.
| 归档时间: |
|
| 查看次数: |
507 次 |
| 最近记录: |