リンクリストのコードを記述しようとしていますが、ノードを追加しようとするとadd()関数のwhileループの直後にコードがスタックしてしまいます。アクセス違反エラー。どうしましたか?アクセス違反 - 場所への書き込みができません
#include<iostream>
template <class T>
class linkedlist
{
struct node
{
T data;
node *lp;
}*p;
public:
linkedlist();
void add(T t);
};
template<class T>
void linkedlist<T>::add(T t)
{
node *r,*q;
r = q = p;
while(p!= NULL)
{
q = p;
p = p->lp;
}
q->lp = new node;
q->lp->data = t;
p = r;
}
template<class T>
linkedlist<T>::linkedlist()
{
p = NULL;
}
int main()
{
linkedlist<int> l1;
l1.add(3);
}
*ノードをコンストラクタで初期化する必要があります。*、NO、**メンバー初期化リスト**で行う必要があります。 –
@Alsはコンストラクタの一部ではありませんか? :P –
あなたが言及したコードステートメントは、メンバー初期化リストに追加できますか?それはできません、それはコンストラクタbody.Soだけあなたの答えとあなたのコメントに接することができます。 –