0

e という連結リストを作成しました。コピー コンストラクターを使用して e2 を作成しましたが、何らかの理由で、e2 を印刷しようとするとプログラムが常にクラッシュします。誰かが私に説明して、これを解決するのを手伝ってくれませんか。

#include <iostream>
#include <ctime>
#include <cmath>

using namespace std;

class Element
{

public: Element();//constructor
    Element(const Element&); //copy constructor

    //Element& Element::operator =(const Element & from);
     void Addelement(int row, int col, int value);
     void swap(int num,int x, int arr[100]);
     void printelement();
     void rowordermajor();

private:


    typedef Element* ElementPtr;


        int row;
        int col;
        int value;
        ElementPtr next; 


    ElementPtr head;

    bool comparegreater(ElementPtr temp1, ElementPtr temp2);

};

int main()
{
Element e;
for (int i=0;i<5;i++)
{
    e.Addelement(i,i,i);



}
e.printelement();

Element e2(e);
//e2.printelement();

system("PAUSE");

}



Element::Element()//normal constructor
{
head=NULL;
}

Element::Element(const Element& e)
{
   this->row=e.row;
   this->col=e.col;
   this->value=e.value;
   this->next=e.next;


}

void Element::Addelement(int row, int col, int value )
{

ElementPtr temp= new Element;
temp->row=row;
temp->col=col;
temp->value=value;
temp->next=head;
head=temp;
 }



         void Element::printelement()//why does it print backwards
{
ElementPtr temp=head;

while (temp != NULL)
{
    cout<<"( "
        <<temp->row
        <<" , "
        <<temp->col
        <<" , "
        <<temp->value
        <<" ) ";

    cout<<endl;

    temp=temp->next;
}

}
4

1 に答える 1

2

引数としてコンストラクターを使用している場合、ヘッドに割り当てていないNULL(または多分) ためです。this->head = e.head;Element& e

于 2013-02-09T11:11:59.310 に答える