機能はこれです:なぜこの関数はsegfaultですか?
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はすでに適切な型のオブジェクトへのポインタとして宣言されています。
ご協力いただければ幸いです。
EDIT:以下のコードは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;
}
EDIT: は、多くのcoutの文に基づいて、エラーは、この機能であるように思わ:
bool Set::isFull()
{
return (numElements == capacity);
}
EDIT:配列インデックスは変更されましたが、まだセグメンテーションがありません
もっと文脈が必要です。完全でコンパイル可能な例が素晴らしいでしょう。 –
まだaddElementのコードを提供していません。エラーの可能性のある場所は、デフォルトのコンストラクタ、コピーコンストラクタ、Setクラスのデストラクタでもあります。 – wolfgang