在各种函数中使用push_back更新类对象的向量

Eva*_*n R 3 c++ class vector push-back

我有一个类对象的向量,我通过读取数据文件在main中创建.然后我将向量传递给几个不同的文件,这些文件包含对向量执行不同操作的函数(按不同字段排序,减去库存等).当我尝试使用它push_back来创建另一个文件(这是同一个项目的一部分)中的向量时,我遇到了一个问题.预先存在的向量传递给函数,向量成功添加到函数内,但是当我退出函数时,添加的记录不再存在,据我所知,我应该访问更新的向后转向我不同文件中的所有不同功能,对吗?如果它与我在main中创建的名称相同,我不应该将更新后的矢量传回去,我应该吗?我确定我使用的语言和术语是错误的(请随意纠正我),但这几乎就好像向量没有全局更新,并且只是在函数内本地更新它的持续时间.

这是我正在使用的函数中的函数定义和代码,我想添加到向量中(为了简洁起见,我正在跳过所有变量参数赋值).我指向的所有函数都是类中的setter函数,在此之前,向量已经包含20个记录,并且设置与下面的函数类似.

void addBook(vector<BookData> books)
{
    BookData *books1;
    books1 = new BookData;
    books1->setTitle(bookTitle);
    books1->setAuthor(author);
    books1->setPub(publisher);
    books1->setIsbn(isbn);
    books1->setWholesale(wholesale);
    books1->setRetail(retail);
    books1->setQty(qtyOnHand);
    books1->setDateAdded(dateAdded);
    books.push_back(*books1);
}
Run Code Online (Sandbox Code Playgroud)

我不想用太多的代码来填充帖子,但如果它有用,我可以发帖更多.我只想在整个程序中访问添加(或我在另一个函数中删除).

Alo*_*ave 5

您应该通过引用传递向量来修改原始全局向量.

void addBook(vector<BookData>& books)
                            ^^^
Run Code Online (Sandbox Code Playgroud)

否则,您将原始向量的副本传递给函数并修改该版本而不是全局版本.