私は最近C++を使い始めましたが、ポインターの概念とそれらの配列への接続を完全に理解しているとは言えません。TermとPolynomの2つのクラスがあります。ユーザーが2つの数字を入力できるメインループがあります。次に、これらの番号が「Term」オブジェクトに追加され、そのオブジェクトが「Polynom」オブジェクトに追加されます。ループが実行されるたびに、新しい「Term」オブジェクトが作成されます。
//These lines are executed until the user is done entering numbers
potens = new Term;
potens->sattPotens(kinput, ninput);//Add values to "Term object"
poly.addTerm(potens);//Add "Term" object to "Polynom" object
「Polynom」オブジェクトは、プログラムで1回だけ作成されます。「Polynom」クラスでは、「Term」ポインタを使用して、「Polynom」オブジェクトに追加されたすべての「Term」オブジェクトを格納します。「Polynom」クラスの「Term」ポインタは、「Polynom」コンストラクタで1回開始されます。
void Polynom::addTerm(Term *t){
*(term+antal_termer) = *t;//This is were the program crashes
antal_termer++;
}
ポインタの代わりにベクトルを使用して「Term」オブジェクトを格納できることは知っていますが、ポインタがどのように機能するかを学習しようとしています。また、メインループで作成されたオブジェクトをいつ削除するのかわかりません。ループが実行されるたびに、新しい「Term」オブジェクトを作成しますが、削除することはありません。
編集:私は「Polynom」クラスの「Term」オブジェクトを次のように割り当てていました。term= new Term []; 次に、それをterm = newTerm[10]に変更しました。しかし、term [antal_termer] = * t;を実行すると、まだクラッシュします。