【发布时间】:2011-05-18 14:13:43
【问题描述】:
函数是这样的:
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 在我的标头中声明为 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);
}
编辑:更改了数组索引,但仍然存在段错误
【问题讨论】:
-
需要更多上下文。一个完整的、可编译的例子会很棒。
-
您还没有提供 addElement 的代码。错误的可能位置还有默认构造函数、复制构造函数和 Set 类的析构函数,因此最好也发布该代码。
标签: c++ pointers segmentation-fault dynamic-memory-allocation