gpt4 book ai didi

c++ - 用指针填充列表 - C++

转载 作者:行者123 更新时间:2023-11-28 06:59:04 25 4
gpt4 key购买 nike

我试图在一个类中用指针填充一个列表,然后在另一个类中使用它,但我总是得到相同的结果。我知道我每次都必须创建一个新对象,但它似乎不起作用。感谢您的帮助,在此先感谢您。这是代码:

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);.

它可以工作,但是当程序到达 index() 时,该函数需要一个 Class1 对象指针而不是一个 int(它是 ID() 的类型)

最佳答案

这段代码

mvar = new Class1;
mvar = next();

覆盖您拥有的指向全新 Class1 对象的唯一指针,泄漏它。您只需创建您想要保留的对象。您不能分步创建对象,也没有垃圾收集来修复此类错误。

关于c++ - 用指针填充列表 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com