谁能帮忙解决Vector的问题(erase()和clear())都出错
主要程序如下:
class A
{
vector<B*> BPED;
};
class B
{
…………
};
vector<A*>::iterator ater;
main(void)
{
A *newA;
newA = (…………); //实现A;
A *newC
memcpy(newC,newA,sizeof(A));
ater = newC->BPED.begin();
newC->BPED.erase(ater); //这里程序会直接死掉;
newC->BPED.clear(); //屏蔽上面的一行这里也会死掉;
}
求解啊……大虾们,坐等答案!
[解决办法]
A类的复制使用operator = 不要memcpy
[解决办法]
memcpy(newC,newA,sizeof(A));
当我看到这句代码的时候我就知道LZ离错误不远了。
[解决办法]
1、貌似newC->BPED没有push_back过。
2、不要用memcpy来拷贝类对象。
[解决办法]
[解决办法]
[解决办法]
operator=(const A &other)
楼上的写法会无限递归。
[解决办法]
是不是newC没有分配内存空间吧?????
memcpy的话是指已经指向内存空间的位置去copy的把!!
[解决办法]