我正在尝试创建一个向量,并将其传递给允许修改向量的函数。这是我的代码的简化版本,不起作用。

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/

10-11 22:39
查看更多