Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的在线商店产生了一个细分错误,我不知道为什么 我正在为一个高级C++课程做作业。该程序模拟在线商店的后端。幸运的是,分配有一个自动加载器,我的Product和Customer类通过了每个测试用例,但是我的Store类在某个地方有一个分段错误,因为自动分级器单元测试每个函数,我知道错误发生在addProduct()中,也可能发生在getProduct()中,因为addProdcut()调用getProduct()_C++_Oop_Segmentation Fault - Fatal编程技术网

我的在线商店产生了一个细分错误,我不知道为什么 我正在为一个高级C++课程做作业。该程序模拟在线商店的后端。幸运的是,分配有一个自动加载器,我的Product和Customer类通过了每个测试用例,但是我的Store类在某个地方有一个分段错误,因为自动分级器单元测试每个函数,我知道错误发生在addProduct()中,也可能发生在getProduct()中,因为addProdcut()调用getProduct()

我的在线商店产生了一个细分错误,我不知道为什么 我正在为一个高级C++课程做作业。该程序模拟在线商店的后端。幸运的是,分配有一个自动加载器,我的Product和Customer类通过了每个测试用例,但是我的Store类在某个地方有一个分段错误,因为自动分级器单元测试每个函数,我知道错误发生在addProduct()中,也可能发生在getProduct()中,因为addProdcut()调用getProduct(),c++,oop,segmentation-fault,C++,Oop,Segmentation Fault,我不确定故障发生在哪里,我尝试使用驱动程序代码在我的机器上重新创建它,但自动平地机只是说发生了分段故障,没有告诉我发生在哪里 //numProducts是一个静态int,是Store类的数据成员 静态int-Store::numProducts=0; //products数组是最大大小为100的产品指针数组 产品*产品[100]; //每个产品都有一个integer类型的唯一id bool Store::addProduct(int-productID,const-char-productNam

我不确定故障发生在哪里,我尝试使用驱动程序代码在我的机器上重新创建它,但自动平地机只是说发生了分段故障,没有告诉我发生在哪里

//numProducts是一个静态int,是Store类的数据成员
静态int-Store::numProducts=0;
//products数组是最大大小为100的产品指针数组
产品*产品[100];
//每个产品都有一个integer类型的唯一id
bool Store::addProduct(int-productID,const-char-productName[])
{
Product*Product=getProduct(productID);
如果(numProducts==99){返回false;}
如果(product!=nullptr){返回false;}
其他的
{
Product*newProduct=新产品(productID,productName);
产品【numProducts】=新产品;
numProducts++;
返回true;
}
}
Product*Store::getProduct(int productID)
{
用于(产品*产品:产品)
{
如果(product->getID()==productID){return product;}
}
返回空ptr;
}
int Product::getID()常量{return id;}
//这是产品构造函数,但是我知道这是非常好的,因为产品类通过了所有的单元测试。
产品::产品(int-productID,const-char-productName[]):
id(productID)、库存(0)、单位销售额(0)、已支付总额(0.0){
setName(产品名称);
strcpy_s(此->说明“”;
}
//这里是setName函数,以防您想要重新创建它
void Product::setName(const char productName[]){
如果(strlen(productName)>0){
strcpy(此->名称,产品名称);
}
否则{
//计数器是一个静态int
计数器++;
ostringstream oss;

oss似乎您在调用其方法之前忘记了对产品进行零检查(将其与nullptr进行比较)

    product->getID();


显然,用零初始化指针调用方法不是一个好主意。

请提供。我不确定故障发生在哪里,我不知道如何提供一个可验证的示例,我希望比我更高级的人能够看到代码并发现分段故障是如何发生的。您阅读了提供的链接吗?我“为什么我的代码不能工作?”这类问题。在没有答案的情况下编写答案通常会涉及猜测,这是我们希望避免的。是的,在未初始化的指针上调用方法不是一个好主意,但如果指针未初始化-将其与
nullptr
进行比较将不会有帮助。但是,既然看来,
产品
是一个全局变量le-它是零初始化的。谢谢,这解决了问题,我只需要确保我没有在nullptr上调用getID,谢谢!
    product->getID();
    Store::getProduct()