所以基本上讓我們說我現在有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