将对象的指针直接存储在指针向量中?

Ton*_*ony 0 c++

我正在进行我的c ++任务,并尝试在我的程序中使用多态.在我的程序中,我想在构造之后立即将一些对象的指针存储在指针向量中:

entities.push_back(&Invader4());
entities.push_back(&Invader3());
entities.push_back(&Invader2());
entities.push_back(&Invader1());
entities.push_back(&Invader0());
Run Code Online (Sandbox Code Playgroud)

class Invader继承类Entity,但是当我尝试访问实体中的元素时,会发生访问冲突.我是否必须先声明另一个Invader类型向量来存储这些对象?

Luc*_*ore 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());
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:删除,我的意思是

for (int i = 0 ; i < entities.size() ; i++ )
    delete entities[i];
Run Code Online (Sandbox Code Playgroud)

当你完成向量时.