我试图解决为什么我的拷贝构造函数拒绝工作。
我上课了:
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(编译器说它是私有的;不允许友谊)。