我不确定要默认返回什么?
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
}

09-27 13:26