C++ C++;将列表作为参数传递给函数
我正在尝试建立一个非常简单的地址簿。我创建了一个联系人类,地址簿是一个简单的列表。我正在尝试构建一个函数,允许用户将联系人添加到通讯簿中。如果我把代码带到函数之外,它就可以正常工作。然而,如果我把它放进去,它就不起作用了。我相信这是一个通过引用传递和通过值传递的问题,我没有按我应该的方式来处理。这是函数的代码:C++ C++;将列表作为参数传递给函数,c++,list,pass-by-reference,pass-by-value,C++,List,Pass By Reference,Pass By Value,我正在尝试建立一个非常简单的地址簿。我创建了一个联系人类,地址簿是一个简单的列表。我正在尝试构建一个函数,允许用户将联系人添加到通讯簿中。如果我把代码带到函数之外,它就可以正常工作。然而,如果我把它放进去,它就不起作用了。我相信这是一个通过引用传递和通过值传递的问题,我没有按我应该的方式来处理。这是函数的代码: void add_contact(list<Contact> address_book) { //the local variables to be used to
void add_contact(list<Contact> address_book)
{
//the local variables to be used to create a new Contact
string first_name, last_name, tel;
cout << "Enter the first name of your contact and press enter: ";
cin >> first_name;
cout << "Enter the last name of your contact and press enter: ";
cin >> last_name;
cout << "Enter the telephone number of your contact and press enter: ";
cin >> tel;
address_book.push_back(Contact(first_name, last_name, tel));
}
void添加联系人(列出地址簿)
{
//用于创建新联系人的局部变量
字符串名、姓、电话;
姓名;
姓名;
电话;
地址簿。推回(联系人(名字、姓氏、电话));
}
我没有收到任何错误,但是当我尝试显示所有联系人时,我只能看到原始联系人。您正在按值传递
地址簿
,因此会复制您传递的内容,当您离开添加联系人
的范围时,您的更改将丢失
而是通过引用传递:
void add_contact(list<Contact>& address_book)
void添加联系人(列表和地址簿)
因为您是按值传递列表,所以它被复制,并且新元素被添加到add\u contact
中的本地副本中
解决方案:通过引用传递
void add_contact(list<Contact>& address_book).
void add_contact(list<Contact>& address_book).
void添加联系人(列表和地址簿)。
说无效添加联系人(列表和地址簿)
通过引用传递地址簿。通过引用传递
void add_contact(list<Contact>& address_book).
void add_contact(list<Contact>& address_book).
void添加联系人(列表和地址簿)。
调用添加联系人(地址簿)时,未更新列表地址簿
代码>你好。谢谢你的及时答复。帮了我很多忙!干杯每一个STL DS都是通过值吗?@胡芦:C++作为一种语言,通过值与参考值的关系取决于每个函数,而不是每种类型。