我有一个返回Customer
对象(不是指针)的函数,如下所示:
Customer CustomerList::retrieve(const int index) const{
if (index<1 || index>size)
return false;
else{
Node *cur = find(index);
return (cur->data);
}
}
此函数从 a (它是一个链表)获取一个Customer
对象。CustomerList
我正在尝试Customer
使用以下函数操作列表中的 (此函数将一个添加Account
到Customer
对象中。)
list.retrieve(i).addAccount(acc);
但是,在此函数调用之后,Customer
对象 inCustomerList
不会改变。我认为原因是我返回了一个Customer
对象的副本,而不是对象本身。
因此,为了返回客户的地址并正确操作它,我对我的函数进行了以下更改。
Customer* CustomerList::retrieve(const int index) const{
if (index<1 || index>size)
return false;
else{
Node *cur = find(index);
return &(cur->data);
}
}
并像这样调用操作函数:
list.retrieve(i)->addAccount(acc);
但它给了我一个“访问冲突读取位置 0x00000044”。错误。我想学的是:
- 为什么它不首先操纵
Customer
对象?我的假设对吗? - 在我更改我的函数和函数调用后,为什么它会给我上面提到的错误?