C++ 由于函数返回指针c++;?
这个函数非常混乱,它会导致我的测试仪出现分段错误,有什么方法可以改进它吗?它应该采用sku参数,这是产品对象的一个属性,并将其与库存数组中的元素相匹配(库存数组由指向产品的指针组成,大小为50),如果找到,我应该返回指针C++ 由于函数返回指针c++;?,c++,arrays,pointers,C++,Arrays,Pointers,这个函数非常混乱,它会导致我的测试仪出现分段错误,有什么方法可以改进它吗?它应该采用sku参数,这是产品对象的一个属性,并将其与库存数组中的元素相匹配(库存数组由指向产品的指针组成,大小为50),如果找到,我应该返回指针 Product* Supplier::getProduct(const string &sku) { bool found = false; int counter =0; Product* ret= new Product(); while (fou
Product* Supplier::getProduct(const string &sku)
{
bool found = false;
int counter =0;
Product* ret= new Product();
while (found =false && counter< inventory.size())
{
if(inventory[counter] && sku == inventory[counter]->getSKU())
{
found = true;
ret = inventory[counter];
}
counter++;
}
if (found ==false)
{
cout << "not found" << endl;
}
return ret;
}
产品*供应商::getProduct(常量字符串和sku)
{
bool-found=false;
int计数器=0;
Product*ret=新产品();
while(found=false&&countergetSKU())
{
发现=真;
ret=存货[柜台];
}
计数器++;
}
if(found==false)
{
您是否有代码found=false
。这需要found==false
或!found
更改:
while (found =false && counter< inventory.size())
while(found=false&&counter
到
while(found==false&&counter
while(found=false…)应该是while(found=false…)您正在泄漏内存。您创建了产品的一个实例,但当在库存中找到某个项目时,它不会被删除。为什么不将找到的全部删除,并在找到后立即返回结果?并将该新的删除;它会导致内存泄漏。返回nullptr
,或引发异常,如果找不到。谢谢!我想知道是否可以直接返回nullptr。
while (found==false && counter< inventory.size())