我已經在我的main()
如下:傳遞載體的功能
vector<Person*> alist;
add(alist);
printDetail(alist);
然後,在另一個文件中,我把它叫做function.cpp
,在這個文件中,我有以下幾種方法:
void add(vector<Person*> &mylist)
{
Person temp_p("firstname1","lastname1",20);
mylist.push_back(new Person("firstname2","lastname2",20));
mylist.push_back(&temp_p);
printDetail(mylist);
}
void printDetail(vector<Person*> mylist)
{
for(int i=0;i<mylist.size();i++)
{
mylist[i]->display();
}
}
當我運行這個程序時,add()
方法中的printDetail(mylist)
將打印出兩個結果沒有任何問題,但在main()
中,只有firstname2
將打印出來。
誰能告訴我爲什麼會發生這種情況?
你能告訴我什麼我應該寫在這一行嗎?我嘗試以不同的方式傳遞temp_p,*,&等..但都得到錯誤。 – Qin
@Qin你不能以任何方式將'temp_p'的地址傳遞給vector,因爲'temp_p'是函數的本地對象。你必須找出另一種方式去做你想做的事情。 – juanchopanza
@Qin你最好不要存儲指針,而是在vector中存儲'Person'對象。這使得代碼既清潔又安全。 – juanchopanza