y2k*_*y2k 2 c++ vector return-value default-value
我不确定要作为默认值返回什么?
myDrugs是一个私人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?
}
Run Code Online (Sandbox Code Playgroud)
所以我会称之为:
Drug *d = DrugDealer->getFirstDrugInSack(DrugType::Weed);
if (d != 0)
// do something
else
// onose?
Run Code Online (Sandbox Code Playgroud)
或者有更好的方法吗?
Leo*_*Hat 13
我会说这取决于函数是否期望找到值,这取决于您的函数是如何定义良好和有凝聚力的,以及它为客户端代码提供的契约类型.
如果找不到值是可以接受的,我会说在这种情况下返回NULL指针是一种向客户端代码指示无法找到该值的方法.
如果找不到值是特殊情况,这表明存在错误,可能下列方法之一可能更好:
在你的情况下,我会说返回NULL是可以接受的,但如上所述,这会改变每种情况,并且没有特定的"经验法则"适用于此处.
有些人喜欢NULL到0.你也可以引发异常.