未在窗口上绘制SFML文本 我使用的是SFML与C++。问题是,如果我使用函数,窗口上不会绘制任何内容,但是当我将文本设置为本地时,我可以进行绘制。请告诉我我做错了什么

未在窗口上绘制SFML文本 我使用的是SFML与C++。问题是,如果我使用函数,窗口上不会绘制任何内容,但是当我将文本设置为本地时,我可以进行绘制。请告诉我我做错了什么,c++,sfml,C++,Sfml,代码: 在game.cpp文件中 void Game::loadMenuText(sf::Font f, std::string textString, int x, int y, sf::Text *tex){ tex->setFont(f); tex->setCharacterSize(16); tex->setFillColor(sf::Color(0x225522ff)); tex->setStyle(sf::Text::Bold); tex->setSt

代码:

在game.cpp文件中

void Game::loadMenuText(sf::Font f, std::string textString, int x, int y, sf::Text *tex){

tex->setFont(f);
tex->setCharacterSize(16);
tex->setFillColor(sf::Color(0x225522ff));
tex->setStyle(sf::Text::Bold);
tex->setString(textString);
tex->setPosition(x,y);
}

}

在game.hpp文件中

private:
sf::Font font;
std::vector<sf::Text> menuText;
public:
void run();
void loadFont();
void loadMenuText(sf::Font, std::string, int, int, sf::Text *tex);
private:
sf::字体;
std::向量菜单文本;
公众:
无效运行();
void loadFont();
void loadMenuText(sf::Font,std::string,int,int,sf::Text*tex);
希望我没有忘记添加任何内容

阅读参考资料

请务必注意,sf::Text实例不会复制 它使用的字体,它只保留对它的引用。因此,一个sf::字体 当sf::Text(即从不)使用时,不得对其进行破坏 编写一个使用本地sf::Font实例创建 文本)

您的问题是,您正在将函数
loadMenuText
中的局部变量
sf::Font f
传递给
tex
,因此它会导致未定义的行为,
tex
引用已删除的资源

将您的签名更改为:

void Game::loadMenuText(sf::Font& f, std::string textString, int x, int y, sf::Text *tex){    
                                 ^^^ 
 //..

然后,您将使用原始的
font
对象,而不是其副本。

请包括您的函数和
sf::Text
的定义。1秒后我将编辑它^^
private:
sf::Font font;
std::vector<sf::Text> menuText;
public:
void run();
void loadFont();
void loadMenuText(sf::Font, std::string, int, int, sf::Text *tex);
void Game::loadMenuText(sf::Font& f, std::string textString, int x, int y, sf::Text *tex){    
                                 ^^^ 
 //..