我正在尝试创建一个向量,并将其传递给允许修改向量的函数。这是我的代码的简化版本,不起作用。
void addStudent(vector<Student*>*);
int main()
{
vector<Student*> students = new vector<Student*>;
addStudent(students);
return(0);
}
void addStudent(vector<Student*> *students)
{
students->push_back(new Student("bob"));
}
这段代码编译有错误。我认为我没有正确传递指针,但不确定。
最佳答案
您已承诺给addStudent
一个指向向量的指针:
void addStudent(vector<Student*> *students)
因此,请使用地址运算符获取指针:
vector<Student*> students;
addStudent(&students);
这里实际上没有什么需要动态分配的,但是如果您这样做了,请注意
new
还会返回一个指针:vector<Student*>* students_ptr = new vector<Student*>();
addStudent(students_ptr);
另一种选择是通过引用传递:
void addStudent(vector<Student*>& students)
vector<Student*> students;
addStudent(students);
但是当函数要更改其参数时,我更喜欢使用指针。
关于c++ - C++帮助学生的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5129208/