C++ 由于函数返回指针c++;?

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

这个函数非常混乱,它会导致我的测试仪出现分段错误,有什么方法可以改进它吗?它应该采用sku参数,这是产品对象的一个属性,并将其与库存数组中的元素相匹配(库存数组由指向产品的指针组成,大小为50),如果找到,我应该返回指针

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())