C++中list的作为返回值进行操作
A对象中有一个list型的私有属性,具有get方法,然后,我在别的地方通过get方法获得这个list后直接调用begin方法,得到的iterator不对。
就是这样使用的std::list<B>::iterator it = A.GetList().begin(),这样调用得到的it的指针地址为0xfeeefeee
但是如果我通过一个变量来存放通过get方法得到的list,再通过这个变量进行begin调用,就没问题,如std::list<B> list = A.GetList();list.begin(),这样就可以。
真是搞不懂。。。。。
[解决办法]
楼主 一定返回的是一个变量std::list
A.GetList().begin() 这样 A.GetList()返回的list 变量将是一个临时变量。
然后在 .begin() 也就是返回一个临时变量的 begin。
当函数执行完成推出之后, 临时变量也就析构了。 这个begin自然也就失效。
std::list<B> list = A.GetList(); 这样 有一个将临时变量赋值到 list的操作。
然后在取begin 当然 没有错
[解决办法]
返回的list变量没人去接的话,当时用完就析构了。而且你删除it3的时候,it3根本不是你返回的list里面的迭代器啊