我有一个指针向量:std::vector<Customer*> customersList
现在,我想获得其中一个要素,并对他进行操作。
我不确定我是否知道,我的猜测是:
Customer* source = restaurant.getCustomer(cust);
问题是我不知道在c ++中是否会创建新对象,或者我只是得到对他的引用。 有我的吸气方法:
Customer* Table::getCustomer(int id) {
for (int i = 0; i < customersList.size(); ++i) {
if (customersList[i]->getId() == id)
return customersList[i];
}
return nullptr;
}
谢谢
答案 0 :(得分:5)
成员函数将返回指针的副本,即Customer
对象本身不被复制,仅被引用。修改返回的Customer*
将导致对pointe(基础对象)进行修改。
请注意,您还想使用<algorithm>
标头,特别是std::find_if
。
const auto customer = std::find_if(customerList.begin(), customerList.end(),
[id](const Customer* c){ return c->getId() == id; });
return customer == customerList.cend() ? nullptr : *customer;