我不确定要默认返回什么?myDrugs
是一个私有(private)的vector<Drug*>
容器
Drug* DrugDealer::getFirstDrugInSack(DrugType drugtobuy)
{
for (int i = 0; i < myDrugs.size(); i++)
{
if (myDrugs[i]->getType() == drugtobuy)
return myDrugs[i];
}
return 0; // is this right?
}
所以我会这样称呼:
Drug *d = DrugDealer->getFirstDrugInSack(DrugType::Weed);
if (d != 0)
// do something
else
// onose?
还是有更好的方法来做到这一点?
最佳答案
返回NULL是可以的。您也可以考虑将指向指针的指针作为参数传递并返回 bool(boolean) 值,如果找到则返回true,否则返回false:
bool DrugDealer::getFirstDrugInSack(DrugType drugtobuy, Drug** out)
{
for (int i = 0; i < myDrugs.size(); i++)
{
if (myDrugs[i]->getType() == drugtobuy) {
*out = myDrugs[i];
return true;
}
}
return false;
}
致电:
Drug* d;
if (dealer->getFirstDrugInSack(dragType, &d)) {
// Found it, use it
}