我想從一個向量返回一個對象的引用,並且該對象位於迭代器對象中。我怎樣才能做到這一點?從迭代器返回對象的引用
我試過如下:
Customer& CustomerDB::getCustomerById (const string& id) {
vector<Customer>::iterator i;
for (i = customerList.begin(); i != customerList.end() && !(i->getId() == id); ++i);
if (i != customerList.end())
return *i; // is this correct?
else
return 0; // getting error here, cant return 0 as reference they say
}
在代碼中,customerList是客戶的一個載體,而返回的getId顧客的ID的功能。
*i
是否正確?我怎樣才能返回0或null作爲參考?
或者,他可以返回一個指針。沿着'return i!= customerList.end()的方向行嗎? &* i:NULL;'。 –
這是幾乎可以創建一個空引用一些iffy鑄造,但一個*真的*壞主意,最有可能在幾乎所有可能的情況下UB。 – BoBTFish
是的,這取決於該功能的預期用途。如果調用函數的初始期望是客戶應該存在,那麼拋出異常是有道理的。如果它的目的更多的是要問「客戶是否存在,如果是,返回客戶」,那麼返回可空類型更有意義。 –