首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位高手能帮忙解决Vector的有关问题(erase()和clear())都出错

2012-03-28 
谁能帮忙解决Vector的问题(erase()和clear())都出错主要程序如下:class A{vectorB*BPED}class B{…………}

谁能帮忙解决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来拷贝类对象。
[解决办法]

探讨
*newC = *newA;会有编译错误的!

[解决办法]
探讨
operator = (A other)
{
=other.……
=other.……
=other.……
…………
};

[解决办法]
operator=(const A &other)
楼上的写法会无限递归。
[解决办法]
是不是newC没有分配内存空间吧?????
memcpy的话是指已经指向内存空间的位置去copy的把!!
[解决办法]
探讨
是不是newC没有分配内存空间吧?????
memcpy的话是指已经指向内存空间的位置去copy的把!!

热点排行