使用向量push_back代码创建对象副本时遇到问题

时间:2016-05-31 17:00:56

标签: c++ sfml

我每次按空格按钮时都尝试复制RectangleShape rect1,但是我没有这样做,只是在释放空格键时,它似乎只是在矢量Vec中删除了我的rect1对象。我无法弄清楚为什么,有人帮我吗?

这是我的代码:

int main() {

class shape {
public:
    RectangleShape rect1;
};

shape getShape;
getShape.rect1.setSize(Vector2f(100, 100));
getShape.rect1.setFillColor(Color(0, 255, 50, 30));

RenderWindow window(sf::VideoMode(800, 600), "SFML Game"); 
window.setFramerateLimit(60);          

window.setKeyRepeatEnabled(false);

bool play = true;
Event event;    
while (play == true) {

    while (window.pollEvent(event)) {
        if (event.type == Event::Closed) {
            play = false;
        }
    }

    window.clear();

    vector <shape> Vec;

    if (Keyboard::isKeyPressed(Keyboard::Space)) {
        Vec.push_back(getShape);
    }

    for (int i = 0; i < Vec.size(); ++i) {
        window.draw(Vec[i].rect1);
    }

    window.display();
}

window.close();
return 0;
}

1 个答案:

答案 0 :(得分:1)

您需要将矢量放在循环外部,否则每次都会创建一个新的空白:

element.all(by.css('.swatches.swatches_size.swatches_find-box label')).
      each(function(element, index) {
        element.getText().then(function(text) {
          if (text === waist) {
            element.click();
          }
          if (text === length) {
            element.click();
          }
        });
      });