Почему мой SFML продолжает падать при передаче sf :: Texture в качестве аргумента в функцию - PullRequest
0 голосов
/ 07 мая 2019

Когда я пытаюсь передать текстуру в качестве аргумента в функцию, а затем запускаю программу, я получаю сообщение « Program.exe перестало работать» в окне, как только я ее запускаю.

Я могу создать текстуру внутри функции, и тогда она будет функционировать, однако это уничтожит текстуру в конце функции, поэтому все, что я получаю, - это белая коробка.

void create_sprite(sf::Texture texty, float lenScale, float widScale, int houseNum, int fieldNum){
    sf::Sprite* spritey = new sf::Sprite(texty);
    spritey -> setScale(lenScale, widScale);
    spritey -> setPosition(fieldWidCoor[houseNum-1][fieldNum-1], fieldLenCoor[houseNum-1][fieldNum-1]);
    houseList.push_back(*spritey);
}

Then in main{}

    sf::Texture grassTex;
    grassTex.loadFromFile("images/field-grass.png");
    create_sprite(grassTex, 0.2, 0.3, 1, 1);


It should cause all calls to the function to create another sprite with the same Texture, but all I get is the crash.

1 Ответ

0 голосов
/ 07 мая 2019

По сути, экземпляр sf :: Sprite сохраняет ссылку на используемую текстуру. Таким образом, sf :: Texture не может быть уничтожено, пока он используется sf :: Sprite, что вы пытаетесь сделать и вызываете ошибку.

...