2012-05-07 146 views
0

我正在处理我的C++任务,并尝试在我的程序中使用多态。在我的计划,我想存储在一个指针矢量某些对象的指针它们构造之后:将对象的指针直接存储在指针向量中?

entities.push_back(&Invader4()); 
entities.push_back(&Invader3()); 
entities.push_back(&Invader2()); 
entities.push_back(&Invader1()); 
entities.push_back(&Invader0()); 

类侵略者继承实体类,但是当我尝试访问该元素的实体,一个accesss冲突发生。我必须声明另一个Invader类型矢量来先存储这些对象吗?

+0

发布您的课程设计。 – tuxuday

回答

5

你正在接受一个临时的地址,这是非法的(准确的未定义行为)。只需动态分配内存:

entities.push_back(new Invader4()); 
entities.push_back(new Invader3()); 
entities.push_back(new Invader2()); 
entities.push_back(new Invader1()); 
entities.push_back(new Invader0()); 

不要忘记在完成后删除向量中的内存。

另外,看看智能指针,在这里可能更合适。

编辑:删除,我的意思是

for (int i = 0 ; i < entities.size() ; i++) 
    delete entities[i]; 

当你与向量来完成。

+0

工程就像一个魅力!thx!并btw你是什么意思删除向量中的记忆?我可以离开它吗? – Tony

+0

@tonyaziten不,你会得到内存泄漏。 –

+0

@tonyaziten见编辑。 –

相关问题