我正在进行我的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类型向量来存储这些对象?
你正在取一个临时的地址,这是非法的(确切地说是未定义的行为).只需动态分配内存:
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)
当你完成向量时.