私は、MultinumberがPairs、Rational、およびComplexによって継承されるように、以下の関数と階層のクラスを持っています。これらのすべてはMultinumberで仮想的な機能を共有します。私の問題は次のコードです。今書き込まれている方法では、newElement変数がMultinumber**
のsetArray
に追加されたときに範囲外になり、この関数内でメモリを割り当てる方法を理解する必要があります。奇妙なことに、ファンクションに渡されるパラメータは、たとえ最初の行に印刷されていても、空であるcout<<newElement->tostring();
誰かが私に何か間違っていると教えてもらえますか?この関数内でのメモリの割り当て方法を教えてください。
bool Set::addElement(Multinumber* newElement)
{
bool success = false;
if(isFull())
{
resize();
}
if(!isMember(newElement))
{
setArray[numElements] = newElement;
numElements++;
success = true;
}
return success;
}
EDIT:はいポスターが正しい、これはメモリのトラブルがstd::vector<boost::shared_ptr<Multinumber>> setArray
でMultinumber** setArray
を置き換える避けるために宿題
もっとコードが必要です。 'Set'クラス全体を投稿してください。また、 'Multinumber'の実装を見ると便利でしょう。 –