函数返回指针c ++引起的分段错误?

时间:2014-02-28 03:47:47

标签: c++ arrays pointers

这个功能非常混乱,导致我的测试仪出现分段故障,有什么方法可以改进它吗?它应该采用sku参数,它是Product对象的属性,并将其与库存数组中的元素(由指向Product的指针组成,大小为50)匹配,如果发现我应该返回指针。< / p>

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;

}

2 个答案:

答案 0 :(得分:4)

您拥有代码found = false。这需要found == false!found

答案 1 :(得分:2)

变化:

    while (found =false && counter< inventory.size())

    while (found==false && counter< inventory.size())