C++;删除向量中的对象并将其替换为新对象 我想删除向量中的对象,并用SFMLC++项目中的新对象替换它们。当我运行程序时,旧对象消失了,没有任何东西出现在它们的位置上。 以下是createObjects函数: vector<Object> createObjects(float numberOfObjects) { vector<Object> v; v.push_back(Object()); return v; } vector createObjects(float numberOfObjects){ 向量v; v、 向后推(对象()); 返回v; }

C++;删除向量中的对象并将其替换为新对象 我想删除向量中的对象,并用SFMLC++项目中的新对象替换它们。当我运行程序时,旧对象消失了,没有任何东西出现在它们的位置上。 以下是createObjects函数: vector<Object> createObjects(float numberOfObjects) { vector<Object> v; v.push_back(Object()); return v; } vector createObjects(float numberOfObjects){ 向量v; v、 向后推(对象()); 返回v; },c++,vector,C++,Vector,下面是main.cpp中while(window.pollEvent(event))中的代码: if ((event.type == Event::KeyPressed) && (event.key.code == Keyboard::Hyphen)) { numberOfObjects--; v.clear(); vector<Object> v = createObjects(numberOfObjects); } if ((event.

下面是main.cpp中while(window.pollEvent(event))中的代码:

if ((event.type == Event::KeyPressed) && (event.key.code == Keyboard::Hyphen)) {
    numberOfObjects--;
    v.clear();
    vector<Object> v = createObjects(numberOfObjects);
}

if ((event.type == Event::KeyPressed) && (event.key.code == Keyboard::Equal)) {
    numberOfObjects++;
    v.clear();
    vector<Objectk> v = createObjects(numberOfObjects);
}
if((event.type==event::KeyPressed)&&(event.key.code==Keyboard::Hyphen)){
对象数--;
v、 清除();
向量v=createObjects(numberOfObjects);
}
if((event.type==event::KeyPressed)&&(event.key.code==Keyboard::Equal)){
numberOfObjects++;
v、 清除();
向量v=createObjects(numberOfObjects);
}

您根本没有替换原始的
向量
,而是将
createObjects()
的输出分配给一个立即超出范围的本地
向量
。您需要通过更改以下内容来删除分配给的本地
v
变量:

vector v=createObjects(numberOfObjects);
为此:

v=createObjects(numberOfObjects);
像这样:

if((event.type==event::KeyPressed)&&(event.key.code==Keyboard::Hyphen)){
对象数--;
v、 清除();

v=createObjects(numberOfObjects);//您根本不是在替换原始的
向量
,而是在将
createObjects()
的输出分配给一个立即超出范围的局部
向量
。您需要通过更改此项来摆脱正在分配的局部
v
变量:

vector v=createObjects(numberOfObjects);
为此:

v=createObjects(numberOfObjects);
像这样:

if((event.type==event::KeyPressed)&&(event.key.code==Keyboard::Hyphen)){
对象数--;
v、 清除();

v=createObjects(numberOfObjects);//
vector v=createObjects(numberOfObjects)
-你没有在createObjects中使用参数
numberOfObjects
,那你为什么要使用它呢?
float numberOfObjects
如果你确实使用了这个参数,并且
numberOfObjects
是一个好名字,我认为你不会希望它成为一个
float
。你不能创建3.1 o对象。
vector v=createObjects(numberOfObjects)
-你没有在createObjects中使用参数
numberOfObjects
,那你为什么要使用它呢?
float numberOfObjects
如果你确实使用了这个参数,并且
numberOfObjects
是一个好名字,我认为你不会希望它成为一个
float
。你不能创建3.1 o对象。