我想用一個類中的指針填充列表,並在另一個類中使用它,但我總是採取相同的結果。我知道我必須每次創建一個新對象,但似乎並不奏效。任何幫助表示感謝,提前謝謝。下面是代碼:用指針填充列表 - C++
list<Class1*> FillList() { //Class1 is a superclass
for (int i = 0; i < 2; ++i) {
//mvar is a Class1 object pointer
mvar = new Class1;
mvar = next(); //returns &Class2 (subclass) object witch has "ID" (int) and
//"Terms" (string) as parameters
if (mvar->ID() != -1) {
mlist.push_back(mvar);
mvar = NULL;
}
}
return mlist;
mlist.clear();
}
//Use of FillList in the other class
list<Class1*> mlist2 = object->FillList(); //returns mlist
while (mlist2.front()->id() != -1) {
index(mlist2.front()); //do something with it - Expects Class1 pointer
...
mlist2 = object->FillList();
}
*我試着使用:的
mlist.push_back(new Class1(mvar->ID());
代替:
mlist.push_back(mvar);.
和它的作品,但是當程序到達指數()函數期望一個Class1對象指針而不是int(它是ID()的類型)
'return mlist; mlist.clear();' - 你是否知道'mlist.clear();'永遠不會被執行? – marcinj
這裏有一些奇怪的事情發生。你將'mvar'設置爲一個新分配的對象,但是立即用'next()'的結果替換它 - 這是內存泄漏。連續更改'mlist2'而不釋放包含的指針也是可疑的。 –
你的問題並沒有真正讓我明白。你可以創建一些可編譯的例子,並試圖用換句話來說明你想實現的目標嗎? – rerx