函数是这样的:
Set::Set(Multinumber* tempArray[], int tempSize)
{
numElements = tempSize;
capacity = tempSize*2;
setArray = new Multinumber*[capacity];
for (int i=0; i<numElements; i++)
{
addElement(tempArray[i]);
}
}
setArray变量在我的 header 中声明为Multinumber **类型
每当我这样称呼它时,它都会出现段错误:
Multinumber* carr[2];
carr[0]=c4;
carr[1]=c5;
Set setb(carr,2);
c4和c5已被声明为指向正确类型对象的指针。
任何帮助将非常感激。
编辑:下面的代码是addElement函数(对缩进表示歉意)
const Set Set::operator+(const Set& rhs) const
{
Set result;
int i=0, j=0;
while ((i < numElements) && (j < rhs.numElements))
{
Multinumber* toadd=new Multinumber;
toadd=*(setArray[i]) + *(rhs.setArray[j]);
result.addElement(toadd);
i++;
j++;
}
while ((i < numElements))
{
result.addElement(setArray[i]);
i++;
}
while ((j < rhs.numElements))
{
result.addElement(rhs.setArray[j]);
j++;
}
return result;
}
编辑:
基于大量的cout语句,此函数似乎存在错误:
bool Set::isFull()
{
return (numElements == capacity);
}
编辑:更改数组索引,但仍存在段错误
最佳答案
carr[1]=c4;
carr[2]=c5;
那不是吗
carr[0]=c4;
carr[1]=c5;
?
一条建议:如果将其加载到调试器(例如gdb)中,它将识别出罪魁祸首,并且您会很快看到错误。
关于c++ - 为什么此功能存在段错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4326199/