单链表复制构造函数

时间:2016-04-05 17:20:37

标签: c++ copy-constructor

我试图解决为什么我的拷贝构造函数拒绝工作。

我上课了:

class Car{

private:
char* make;
int license_number;
int owner_ID;
Car* next;


public:
//constructor with data presentation
Car(char* name, int number, int id);
//destructor with data presentation - for further use
~Car();
//Rest of methods
Car*& GetNext();
char*& GetMake();
int& GetLic();
int& GetID();
void Print();
};

和类CarList

class CarList{

private:
Car* head;


public:
CarList();
~CarList();
CarList(const CarList & old);
void add_car(char* name, int number, int id);
void remove_make(char* name);
void print();
};

问题是,我想为CarList创建一个复制构造函数。为了实现我写的:

CarList::CarList(const CarList & old)

{
    cout<<"Copy constructor initiated. " <<endl;

    Car* newhead=old.head;
    Car* temp=NULL;

    while(newhead)
    {
        Car* cp = new Car(*newhead);
        if(temp) temp->GetNext()=cp;
        else head=cp;

        newhead=newhead->GetNext();
        temp=cp;
    }
}

除了每个'make'之外的所有内容都会被正确复制。每个品牌似乎都在控制台中捶打。

我怀疑它可能是由于删除了旧列表(当旧列表未删除时可以使用)。如何更改我的copy-constructor以在删除后保留make? 它有点不同,因为我不知道如何在进行深拷贝时从复制构造函数中的Car访问char * make(编译器说它是私有的;不允许友谊)。

0 个答案:

没有答案