所以基本上让我们说我现在有2个班。 1被称为人类,另一个被称为众议院。如何进行深层复制?
我现在做的是取得的房屋制造和众议院.h文件中会破坏人的,所以基本上我有
Human *humanP;
而在.cpp文件构造
humanP = new Human;
humanP->something(); // lets me access the methods in the Human class
据我所知,这使得一个组合和房子创建/破坏人类的对象。但是我需要为我的Human对象添加参数,例如高度和年龄。
在主我想有像
int age, height;
cout << "Whats your age? << endl;
cin >> age;
cout << "Whats your height? << endl;
cin >> height;
有了这个,我想使
Human humanO(age, height);
,这将创造这些参数人类对象。但我仍然希望人类对象在House类中被关闭,然后在那里被销毁。据我所知,我需要做一个深层次的副本,以便我可以将HouseO复制到House类中,然后删除主文件中的对象。
我一直在寻找低谷例子,但也有相当多的不同者,任何人都可以写什么代码看起来像做是在主创建此人对象的深层副本?
编辑:
制作编辑在这里,而不是回答的原因,而是更容易在这里写的代码。
好的另一个愚蠢的问题。如果我用简单的方法与
Human *newPerson = new Human
,做
House house;
house.addHuman(newPerson)
具有类方法
addHuman(Human *other)
{
this->humanP = other;
cout << humanP->getAge() << endl << endl << endl;
}
它工作正常,并给我的年龄时。
如果我使用智能指针它不工作,我应该怎么改?它给我错误,如“没有匹配功能”。我应该将哪些论据放入addHuman()
,以便它能够使用智能指针呢?
你有拷贝构造函数吗?为什么House会定义这个humanP成员呢?它代表什么? – user2357112
也许试着避免使用'new'。如果您在'House'类中放置了'std :: vector'',那么它将被复制到默认的拷贝构造函数中。 [这是家庭作业](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)? –
wally
如果您发布一些代码尝试深层复制,它会更容易帮助。 – wally